[英]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.