我正在研究Apache Solr。
目前,它运作良好。当我输入pork AND belly
时,它会返回包含pork
和belly
的所有查询。
但我需要搜索pork and belly
并获得相同的结果。
但它没有,因为它会返回pork
或and
或belly
的所有结果。
最简单的方法是在发送查询之前在JavaScript中更改它。
但有没有办法通过更新config
从Apache Solr做到这一点?
感谢。
我做了什么:我试图通过在schema.xml
添加PatternReplaceCharFilterFactory
来在dynamic field
中切换它,但很明显它失败了。
有什么建议吗?
答案 0 :(得分:1)
eDisMax查询解析器默认接受小写运算符。在solrconfig.xml
中,指定该解析器,您还可以明确告诉它接受小写运算符:
<requestHandler name="search" class="solr.SearchHandler" default="true">
<lst name="defaults">
<str name="defType">edismax</str>
<bool name="lowercaseOperators">true</bool>
</lst>
...
</requestHandler>
答案 1 :(得分:0)
如果您使用的是(e)dismax查询处理程序,只需使用pork belly
搜索q.op=AND
即可。只要您为您的集合(以及正确的字典)配置了StopWordFilter,and
将自动删除。与Solr捆绑在一起的默认stopwords_en.txt
文件在其列表中包含该文件。