如何在Thinking Sphinx搜索中为关联添加“IS NOT NULL”条件?例如,如果我们有一个具有以下索引的文章模型..
ThinkingSphinx::Index.define :article, :with => :active_record do
indexes subject, :sortable => true
indexes content
has pictures(:id), as: :picture_ids
end
..我们希望搜索包含特定关键字并拥有图片的所有文章。文章和图片通过简单的has_many
关系
class Article < ActiveRecord::Base
has_many :pictures, -> { where 'pictures.type' => 'ArticlePicture' }
以下行曾用过工作,如here所述,但它似乎不再起作用了: - (
Article.search(keyword, without: {picture_ids: 0})
这样做的正确方法是什么?我正在使用Sphinx 2.2.10
和thinking-sphinx 3.2.0
答案 0 :(得分:2)
您可以使用SQL代码段添加其他属性:
has "COUNT(DISTINCT pictures.id)", :as => :picture_count, :type => :integer
然后 - 一旦你运行rake ts:rebuild
- 我希望以下内容有效:
Article.search(keyword, :without => {:picture_count => 0})
请务必注意,您仍需要在索引定义中引用pictures
关联,以确保存在SQL连接。这是通过现有属性(picture_ids
)完成的,否则您可以使用索引定义中的以下行强制连接:
join pictures