当用户在令牌同情结果之间使用AND运算符输入更多单词时,我希望获得优化的搜索结果。
我尝试设置qo=AND
,但不起作用并返回仅包含输入单词之一的结果。
例如,我使用像这样的字段搜索分析器:
<fieldType name="serch_text" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
<filter class="solr.TrimFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.EdgeNGramFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory" preserveOriginal="true"/>
<filter class="solr.TrimFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
因此对于查询searching:(hel world)
,我想为每个单词应用分析器,并在结果之间进行“与”运算。实际上,我期望这样的事情:
(hel 比较 h,他,hel,地狱,你好) AND (世界比较 w,wo,... )
并返回匹配的结果。
答案 0 :(得分:0)
自变量为q.op=AND
。
分析页面还将告诉您每一侧正在生成哪些令牌,因此输出将告诉您为什么两个输入都被命中。
通常,在索引和查询时NGram过滤器(和令牌生成器)都会给您带来奇怪的结果(即被查询的地狱会打击漏洞,因为两者都会生成令牌h)
通常,您只需要在编制索引时进行ngram(以实现自动完成/单词开始功能)。