ElasticSearch Stemming

Gab*_*bar 6 lucene stemming tokenize analyzer elasticsearch

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

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

此外,映射的示例将非常有用.

Art*_*wak 16

请注意词干和lemmatisation之间区别.词干算法应用一系列规则(和/或字典查找,例如KStem的情况),并且不保证结果将是正确的语义"根"(即引理).

因此,例如,"腌制"和"海军陆战队"这两个词将被Porter stemmer转换为"marin",这被认为是非常"具有侵略性的" - 它往往会产生大量单词的相同词干.有更保守的,例如S-Stemmer,它只将复数转换为单数形式(org.apache.lucene.analysis.en.EnglishMinimalStemFilter).

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

最好的解决方案是尝试弹性搜索中可用的许多不同的词干分析器(这里可以看到一个示例映射),并观察结果的精确度和召回率.如果你没有测试套件的查询,那么最好的办法是执行"典型"查询并注意"奇怪"的结果(词干分析器的效果太强烈)或者"好"结果被忽略(过于保守)词干).