【问题标题】:ElasticSearch Stemming弹性搜索词干
【发布时间】:2012-07-11 05:43:47
【问题描述】:

我正在使用 ElasticSerach,我想为英语设置基本词干提取。所以基本上,战斗机返回战斗或任何包含战斗词根的词。

我有点困惑如何实现这一点。我正在阅读分析器、标记器和过滤器,并且可以在 ElasticSearch 中使用多种词干提取算法。我只是不确定要使用哪种组合 - 雪球、词干、搬运工词干或同义词过滤器。

此外,映射示例会很有帮助。

【问题讨论】:

    标签: lucene tokenize elasticsearch analyzer stemming


    【解决方案1】:

    请注意difference between stemming and lemmatisation。词干算法应用一系列规则(和/或字典查找,例如 KStem),并且不保证结果将是正确的语言“根”(即引理)。

    因此,例如“marinate”和“marines”这两个词都会被 Porter 词干分析器转换为“marin”,这被认为是相当“激进”的词干——它往往会为大量词产生相同的词干。还有更保守的,例如 S-Stemmer,它只能将复数形式转换为单数形式 (org.apache.lucene.analysis.en.EnglishMinimalStemFilter)。

    在研究论文中发现的词干提取方法的比较似乎支持 KStem,因为它对英语文本最有效,但词干分析器的选择在很大程度上取决于文档的词汇量。您的目标不是优化词干分析器的性能,而是搜索引擎的性能,因此将其与系统的其他元素(尤其是查询扩展)分开测量在实践中并不是一个好主意。

    最好的解决方案是尝试在 elasticsearch 中可用的许多不同的词干分析器(可以看到一个示例映射 here)并观察结果的精度和召回率。如果您没有查询的测试套件,那么您最好的选择是执行“典型”查询并注意“奇怪”结果(词干分析器过于激进)或“好”结果被省略(过于保守)词干分析器)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-07
      • 2019-06-04
      • 1970-01-01
      • 2021-02-19
      • 2019-06-15
      • 1970-01-01
      • 2014-11-18
      • 2018-01-12
      相关资源
      最近更新 更多