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文件
fq=type:furniture AND location:office
而不是使用AND,这也可以分成两个filter查询。
fq=type:furniture fq=location:office