Thinking Sphinx,搜索按关联属性排序
Thinking Sphinx, search ordered by associate's attribute
我正在尝试按关联对象上的属性对模型项(实时索引)的 Thinking Sphinx 搜索结果进行排序,文档:
@items = Item.search(
'jitters',
sql: {
left_joins: :document,
order: 'documents.published_at DESC, items.created_at DESC'
}
)
当有结果时,这会正常工作。
但是,当 Thinking Sphinx 找不到任何结果时,它 returns <NoMethodError: undefined method 'any?' for nil:NilClass>
。
我希望它 return 通常的“未找到结果”。
有谁知道进行此查询的正确方法吗?还是我发现了错误?
错误可能是由于 left_joins
选项引起的 - 我感觉 Thinking Sphinx 不支持该选项。
但是,这里更好的方法是将文档的 published_at 时间包含在项目索引中,这样 Sphinx 本身就可以进行排序:
# within the index definition:
has published_at
has document.published_at, :as => :document_published_at
# and then when searching:
Item.search "jitters", :order => "document_published_at DESC, published_at DESC"
我正在尝试按关联对象上的属性对模型项(实时索引)的 Thinking Sphinx 搜索结果进行排序,文档:
@items = Item.search(
'jitters',
sql: {
left_joins: :document,
order: 'documents.published_at DESC, items.created_at DESC'
}
)
当有结果时,这会正常工作。
但是,当 Thinking Sphinx 找不到任何结果时,它 returns <NoMethodError: undefined method 'any?' for nil:NilClass>
。
我希望它 return 通常的“未找到结果”。
有谁知道进行此查询的正确方法吗?还是我发现了错误?
错误可能是由于 left_joins
选项引起的 - 我感觉 Thinking Sphinx 不支持该选项。
但是,这里更好的方法是将文档的 published_at 时间包含在项目索引中,这样 Sphinx 本身就可以进行排序:
# within the index definition:
has published_at
has document.published_at, :as => :document_published_at
# and then when searching:
Item.search "jitters", :order => "document_published_at DESC, published_at DESC"