是否可以使用两个不同的单词在两个字段中搜索Solr并仅返回包含这两个字段的结果?
例如,如果我有字段“type”和“location”,我只想要那些在其中包含type ='furniture'和location ='office'的结果。
答案 0 :(得分:60)
您可以使用布尔运算符并搜索单个字段。
q=type:furniture AND location:office
如果值已修复,则最好使用“过滤查询性能”。
fq=type:furniture AND location:office
答案 1 :(得分:5)
建议的解决方案有一个缺点,你必须关心转义特殊字符。 如果用户搜索“type:d'或AND location:coffee break”,则查询将失败。
我建议组合两个edismax处理程序:
<requestHandler name="/combine" class="solr.SearchHandler" default="false">
<lst name="invariants">
<str name="q">
(_query_:"{!edismax qf='type' v=$uq1}"
AND _query_:"{!edismax qf='location' v=$uq2}")
</str>
</lst>
</requestHandler>
像这样调用请求处理程序:
http://localhost:8983/solr/collection1/combine?uq1=furniture&uq2=office
<强>解释强>
Solr Docs
答案 2 :(得分:4)
您还可以将dismaxRequest处理程序上的boostQuery函数用作
type=dismax&bq=type:furniture AND location:office
答案 3 :(得分:1)
fq=type:furniture AND location:office
不是使用AND,也可以分成两个过滤查询。
fq=type:furniture
fq=location:office