Solr 同义词图过滤器在其他过滤器之后不起作用

Solr synonym graph filter not working after other filter

我正在尝试将 15.6" 搜索转换为 15.6 inch。想法是首先将 15.6" 替换为 15.6 ",然后将 " 与同义词规则 " => inch 匹配。 我创建了类型定义:

<fieldType name="text_de" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory" />
        <filter class="solr.PatternReplaceFilterFactory" pattern='^([0-9]+([,.][0-9]+)?)(")$' replacement=" " />
        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" />
    </analyzer>
</fieldType>

但它不起作用!如果我输入 15.6" 我得到 15.6 ",但是当我输入 15.6 " 我得到我想要的 - 15.6 inch.

为什么不起作用?我错过了什么吗?

编辑:

Solr 分析:

问题是 15.6 " 在您的模式替换过滤器之后仍然是单个标记 - 只是创建一个带有 space 的标记不会拆分它。

您可以看到它仍然作为单个标记保留,因为行中没有 |(分隔标记)。

在它后面添加一个 Word Delimiter Filter(从你的分析链看来你已经有一个,它只是不包括在你的问题中),或者,更好的是,在 PatternReplaceCharFilterFactory before 分词器获得将输入拆分为单独的分词的任务:

<analyzer>
  <charFilter class="solr.PatternReplaceCharFilterFactory" pattern='^([0-9]+([,.][0-9]+)?)(")$' replacement=" " />
  <tokenizer ...>

您可能需要根据您的输入(因为它现在将应用于整个输入字符串 - 确保 "Macbook 15.6" 256GB" 被适当匹配)。