一尘不染

动态更改Elasticsearch同义词

elasticsearch

是否可以在索引中存储elasticsearch的同义词?还是可以从像ouchdb这样的数据库中获取同义词列表?我想通过REST-
API将同义词动态添加到elasticsearch。


阅读 477

收藏
2020-06-22

共1个答案

一尘不染

使用同义词有两种方法:

  • 在编制索引时扩展它们,
  • 在查询时扩展它们。

不建议在查询时扩展同义词,因为它会引起以下问题:

  • 评分,因为同义词具有不同的文档频率,
  • 多令牌同义词,因为查询解析器在空白处拆分。

有关更多详细信息,请参见http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.SynonymFilterFactory(在Solr
Wiki上,但也与ElasticSearch相关)。

因此,推荐的方法是在索引编制时扩展同义词。在您的情况下,如果同义词列表是动态管理的,则意味着您应重新索引每个包含其同义词列表已更新的术语的文档,以便在更新前后分析的文档之间评分保持一致。我并不是说这是不可能的,但是这需要一些工作,并且可能会导致索引中出现频率很高的同义词的性能问题。

2020-06-22