提问者:小点点

Solr-俄语同义词不起作用


我在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

我检查了“synonmes. txt”文件的编码,它是utf-8。

英语同义词的查询工作得很好。我只对俄语同义词有问题,它们不起作用,索尔忽略了它们。我自己无法处理这个问题。

我在30分钟后补充道:不知何故,: "бетмэн", "спайдермэн" 在搜索结果中找到了,但 "бетмен", "спайдермен" 没有。


共2个答案

匿名用户

尝试交换同义词和搬运工过滤器的顺序。事实上,您在切断单词结尾后正在查看同义词文件。可能只是不匹配。

管理WebUI中的分析屏幕是一个很好的工具,可以查看文本在通过各个过滤器时发生了什么。

匿名用户

我刚刚为这个案例写了一个小测试——我发现,词干是导致这个问题的原因。当我禁用它时——一切都很顺利,用同义词交换它也有帮助。

参考测试-https://github.com/MysterionRise/information-retrieval-adventure/blob/master/lucene5/src/main/scala/org/mystic/SynonymsAndStopwords.scala