我想显示与给定作者相关的电影。在作者的页面上,我希望用户能够按关键字进行分页,排序和过滤。
在我的本地计算机上一切正常。但是,在制作中,作者页面上的电影列表是空的,我无法弄清楚原因。在生产中,在控制台中,我测试了以下表达式,但没有运气(总是返回0,而它在dev中返回值> 0):
ruby-1.9.2-p290 :042 > Movie.search(:with => {:author_ids => [6]}).count
=> 0
ruby-1.9.2-p290 :043 > Movie.search(:with => {:author_ids => 6}).count
=> 0
奇怪的是,我使用非常相似的代码来显示与主题页面上的主题相关联的电影,并且它在开发和生产中非常有用。例如:
ruby-1.9.2-p290 :051 > Movie.search(:with => {:topic_ids => 2}, :per_page => 1000).count
=> 295
以下是我定义Movie类的方法:
class Movie < ActiveRecord::Base
belongs_to :author
has_many :topics
...
define_index('movie') do
...
has author(:id), :as => :author_ids,
:facet => true
has topics(:id), :as => :topic_ids,
:facet => true
...
end
...
end
以下是我的作者显示控制器的样子:
def show
@author = Author.find(params[:id])
keywords = params[:what] || ""
with_params[:author_ids] = [@author.id]
@movies = Movie.search(
keywords,
:with => with_params
)
end
这让我相信生产中的Sphinx指数有问题,但我不确定如何进一步调查以找到问题的根源......
更新:按照Pat的建议,我更新了Sphinx,一切都解决了(我从0.9.8升级到0.9.10)!我很困惑,因为Sphinx不是宝石(即使存在Sphinx宝石)......所以我不得不经历常规下载,制作,安装过程。
答案 0 :(得分:1)
我将从明显的开始,但也许这已经尝试过了 - author_ids属性是否相对较新?自从添加该属性后,您是否重建了(索引和重新启动)Sphinx? rake ts:rebuild
是一种简单的方法。
更新:事实证明更新Sphinx是这里的解决方案 - 亚历克斯可以确认哪个版本,但我猜测0.9.9或更高应该可以做到这一点。