【问题标题】:Solr - russian synonyms are not workingSolr - 俄语同义词不起作用
【发布时间】:2014-11-25 13:28:59
【问题描述】:

我在 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 分钟后由我添加: 不知何故,“бетмэн”、“спайдермэн”可以在搜索结果中找到,但“бетмен”、“спайдермен”却没有。

【问题讨论】:

  • solr 是否有任何其他信息可用,例如调试输出?
  • 你能告诉我们schema.xml中完整的字段定义吗?
  • 所以,“бетмэн”、“супермэн”、“спайдермэн”正在工作。 “бетмен”、“супермен”、“спайдермен”不工作。我在 synonyms.txt 中添加了“巴黎”、“法国”。重新启动后,我可以立即查询同义词(巴黎、法国)。但是“париж”和“франция”在完全重新索引后也不起作用。

标签: solr


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-17
      • 2012-06-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多