大家好,我是一个使用sunspot和solr的新rails开发人员。
这是我的可搜索区块:
searchable do
text :name, :boost => 10
text :description
text :tags do
tags.map(&:name)
end
text :ingredients do
ingredients.map(&:ingredient)
end
string :ingredients, :multiple => true do
ingredients.map(&:ingredient)
end
string :user
end和我的控制器:
@search = Recipe.search do |query|
query.fulltext params[:search]
query.paginate(:page => params[:page] || 1, :per_page => 20)
end
@recipes = @search.results我正在构建一个食谱搜索引擎。基本上,现在我有了它,这样您就可以搜索食谱的名称、配料和与食谱相关联的标签,并显示匹配的食谱。
但正如你所看到的,我也在尝试创建一个关于配料的分面搜索,我已经做了字符串。
我的目标是能够搜索食谱,就像你现在可以做的那样,但是如果你添加了一个加号,后面跟着一个配料,那么它就会在搜索过程中出现,减号也是如此。举个例子,下面是一个查询:
Chicken Piccata +lemon => searches for chicken piccata with lemon
Chicken Piccata -lemon => searches for chicken piccata without lemon我一直在尝试这样的东西:
with(:ingredients, params[:ingredients]) if params[:ingredients].present?但我不知道如何处理它的+/-方面。我怎么才能做到这一点呢?
感谢大家的帮助!
发布于 2013-06-28 18:32:38
然而,不确定是否创建太阳黑子查询....
Solr支持布尔运算符,因此支持NOT (-),它将返回不包含该单词的结果。
因此,使用缺省运算符AND的Chicken Piccata lemon ->应该返回所有结果
此外,Solr支持NOT运算符,因此Chicken Piccata -lemon,将被解释为内容中没有lemon的所有结果。
您还可以查询-ingredients:lemon以排除结果。
https://stackoverflow.com/questions/17355210
复制相似问题