Solr在使用变音符号进行搜索时会找到不带变音符号的单词,而不是相反
对于我的solr实现,我希望查询返回带和不带变音符号的单词,无论搜索时使用或不使用变音符号 举例 搜索词是“çest”-Solr返回:“cest”、“çest”和“çest ca” 搜索词是“cest”——Solr返回:“cest”、“çest”和“çest ca” 目前,第一个工作。当我搜索“çest”时,它同时返回cest和çest。但是,当我搜索“cest”时,它只返回“cest” 这是它在我的模式中的外观:Solr在使用变音符号进行搜索时会找到不带变音符号的单词,而不是相反,solr,Solr,对于我的solr实现,我希望查询返回带和不带变音符号的单词,无论搜索时使用或不使用变音符号 举例 搜索词是“çest”-Solr返回:“cest”、“çest”和“çest ca” 搜索词是“cest”——Solr返回:“cest”、“çest”和“çest ca” 目前,第一个工作。当我搜索“çest”时,它同时返回cest和çest。但是,当我搜索“cest”时,它只返回“cest” 这是它在我的模式中的外观: <fieldType name="text_special_search"
<fieldType name="text_special_search" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<filter class="solr.ASCIIFoldingFilterFactory"/>
<charFilter class="solr.PatternReplaceCharFilterFactory" pattern="\W+" replacement="-"/>
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
</analyzer>
</fieldType>
有没有一种方法可以让它同时工作?如果您想要任何一种匹配,您不需要
solr.PatternReplaceCharFilterFactory
。
这将在将特殊字符传递到ASCII筛选器之前删除这些字符
您可以使用:-
<fieldType name="text_special_search" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
</analyzer>
</fieldType>
您还可以使用空白标记器来拥有标记,并使用小写作为过滤器
此外,请记住分析器中的执行顺序如下所示,请注意您的执行顺序:-
- 炭过滤器
- 标记器
- 过滤器
<fieldType name="text_special_search" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory" preserveOriginal="true"/>
</analyzer>
</fieldType>