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" 被适当匹配)。
我正在尝试将 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" 被适当匹配)。