我的班级中有一个标签数组,我想将全文搜索范围限定为只返回对象,如果它们包含tags数组中的多个值之一。不确定这是否可行,因为有多个标签和多个范围值。
class Video
include Sunspot::Mongoid2
field :categories, type: Array, default: [] # array of strings
field :description, type: String, default: ""
field :title, type: String, default: ""
searchable do #these fields will be indexed by sunspot/solr
text :title
text :description
string :categories # this seems wrong but there is no array field type?????
end
end
这似乎是错误的,因为没有array
字段类型,字符串数组与string
不同。
然而,我想要的全文查询是这样的:
search = Video.search do
fulltext params[:q] do
fields :title, :description
end
with(:categories, ["Netflix", "Amazon"])
end
@videos = search.results
同样,这是因为categories
通常会有多个值,因此对象可能具有:
video.categories = ["Horror", "Drama", "Netlfix"]
如果fulltext
与上述类别匹配with(:categories, ["Netflix", "Amazon"])
有没有办法在太阳黑子中做到这一点?
答案 0 :(得分:3)
跑耙太阳黑子:solr:reindex给出了解决这个问题的线索。它说类别不是多值的。所以以下解决了它:
searchable do #these fields will be indexed by sunspot/solr
text :title
text :description
string :categories, multiple: true
end
和reindex和查询工作。