繁体   English   中英

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="$1 $3" />
        <filter class="solr.SynonymGraphFilterFactory" synonyms="synonyms.txt" />
    </analyzer>
</fieldType>

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

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

编辑:

索尔分析: 不工作

在职的

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

您可以看到它仍然保留为单个令牌,因为没有| 在线(分隔令牌)。

在它之后添加一个 Word Delimiter Filter(从您的分析链看来,您已经有了一个,它只是没有包含在您的问题中),或者更好的是,分词器获得将输入拆分为的任务之前PatternReplaceCharFilterFactory进行替换单独的令牌:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM