优化搜索结果以查找SOLR中的更多单词

时间:2019-09-23 09:02:56

标签: solr

当用户在令牌同情结果之间使用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,... )

并返回匹配的结果。

1 个答案:

答案 0 :(得分:0)

自变量为q.op=AND

分析页面还将告诉您每一侧正在生成哪些令牌,因此输出将告诉您为什么两个输入都被命中。

通常,在索引和查询时NGram过滤器(和令牌生成器)都会给您带来奇怪的结果(即被查询的地狱会打击漏洞,因为两者都会生成令牌h)

通常,您只需要在编制索引时进行ngram(以实现自动完成/单词开始功能)。