Solr EdgeNGramFilterFactory 和 minGramSize

Solr EdgeNGramFilterFactory and minGramSize

有没有办法使用 EdgeNGramFilterFactory 并继续搜索准确的术语?

我想保持 minGramSize = 4,但是如果我搜索 "pad",我想得到 "mouse pad" 的结果,因为短语中有一个确切的术语。

<fieldType name="ngran_text_general" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.EdgeNGramFilterFactory" 
            minGramSize="4" maxGramSize="15" side="front"/>
    <filter class="solr.BrazilianStemFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

您想要的是带有 EdgeNGramFilterpreseverOriginal 标志,但尚未实现。 a feature request for Solr (SOLR-5332) 解决了这个问题。该功能计划用于 5.1 版。 5.0 版刚刚发布(2015 年 2 月 20 日)。因此,在您进行升级后,可能需要一段时间才能使用它。

如果等待和升级不是一个选项,您可以使用

解决此问题
  • 具有更规则分析器的第二个字段
  • the copyField command 在您的模式中填充字段
  • dismax or better edismax 查询处理程序来处理同一搜索查询的两个字段