solr和查询多个字段

是否有可能使用两个不同的单词在两个字段中searchsolr,只返回包含两个字段的结果?

例如,如果我有字段“types”和“位置”,我只想要那些type ='furniture'和location ='office'的结果。

您可以使用布尔运算符并search各个字段。

q=type:furniture AND location:office 

如果这些值是固定的,则最好使用筛选查询来提高性能。

 fq=type:furniture AND location:office 

您也可以在dismaxRequest处理程序上使用boostQuery函数

 type=dismax&bq=type:furniture AND location:office 

build议的解决scheme有缺点,你必须关心转义特殊字符。 如果用户search“type:d'or AND location:coffee break”,查询将失败。

我build议结合两个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 

说明

  • variables$ uq1和$ uq2将被请求参数uq1和uq2所替代。
  • 第一个edismax查询(uq1)的结果由逻辑AND与第二个edismax查询(uq2)组合,

Solr文件

https://wiki.apache.org/solr/LocalParams

 fq=type:furniture AND location:office 

而不是使用AND,这也可以分成两个filter查询。

 fq=type:furniture fq=location:office