我在ubuntu 12.04 LTS上有solr v4.8.0。
我在schema.xml中有过滤器solr.SynonymFilterFactory。
<fieldType name="text_ru" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_ru.txt" format="snowball" />
<filter class="solr.SnowballPorterFilterFactory" language="Russian"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />
</analyzer>
</fieldType>
我有下一个映射
spidermen, superman, batman, бетмен, бетмэн, спайдермен, спайдермэн, супермен, супермэн, spiderman
我检查了“synonyms.txt”文件的编码,它是utf-8。
使用英语同义词的查询工作正常。我只有俄语同义词的问题,他们没有工作,solr忽略了它们。我自己无法解决问题。
30分钟后由我添加: 不知何故,单词:“бетмэн”,“спайдермэн”可以在搜索结果中找到,但“бетмен”,“спайдермен”不是。
答案 0 :(得分:1)
我只是为这个案子写了一个小测试 - 而且我发现,这个问题源于此问题。什么时候,我禁用它 - 一切顺利,也可以用同义词帮助交换它。
答案 1 :(得分:1)
尝试交换同义词和移植过滤器的顺序。实际上,在切断单词的结尾后,您正在查找同义词文件。可能只是不匹配。
管理Web UI中的 Analysis 屏幕是一个很好的工具,可以查看文本在通过各个过滤器时会发生什么。