【问题标题】:Thinking Sphinx, search ordered by associate's attributeThinking Sphinx,按关联属性排序的搜索
【发布时间】:2019-08-29 01:32:12
【问题描述】:

我正在尝试通过关联对象 Document 上的属性为模型项(实时索引)排序 Thinking Sphinx 搜索结果:

 @items = Item.search(
  'jitters',
  sql: {
    left_joins: :document,
    order: 'documents.published_at DESC, items.created_at DESC'
  }
)

当有结果时,这可以正常工作。

但是,当 Thinking Sphinx 没有找到结果时,它会返回 <NoMethodError: undefined method 'any?' for nil:NilClass>。

我希望它返回通常的“未找到任何结果”。

有人知道进行此查询的正确方法吗?还是我发现了一个错误?

【问题讨论】:

    标签: ruby-on-rails thinking-sphinx


    【解决方案1】:

    错误可能是由于 left_joins 选项造成的 - 我感觉 Thinking Sphinx 不支持此功能。

    但是,这里更好的方法是在您的项目索引中包含文档的发布时间,以便 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"
    

    【讨论】:

    • 感谢@pat,这是一种更好的方法,按预期工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多