我的字段分析器定义中包含以下过滤器的Solr-5.5.1:
<filter class="solr.MorfologikFilterFactory" />
<filter class="solr.ASCIIFoldingFilterFactory"/>
它通常效果很好,但对某些词来说有问题,例如使用Poznań
。它是一个城市名称,但是词干分析器将其识别为具有基本形式poznanie
的波兰名词,并且这是被索引的内容。现在ASCII折叠应该确保在搜索poznan
时,poznań
的文档会匹配。但是,poznan
被词干分析器识别为poznanie
,因此不匹配。
如何解决这个问题?
我对解决方法的想法是让stemmer始终保留原始令牌,以便poznań
变为[poznań, poznanie]
而不是[poznanie]
。有没有一种简单的方法来实现这一目标?有没有理由它默认不起作用?
我在solr.MorfologikFilterFactory的javadoc中找不到任何关于它的内容。
答案 0 :(得分:0)
我的解决方法想法有一个简单的实现:确保词干分析器接收每个令牌及其ascii折叠形式。这可以通过额外的ASCIIFoldingFilterFactory来完成:
<filter class="solr.ASCIIFoldingFilterFactory" preserveOriginal="true"/>
<filter class="solr.MorfologikFilterFactory" />
<filter class="solr.ASCIIFoldingFilterFactory"/>