是否可以在索引中存储elasticsearch的同义词?或者是否可以从像 couchdb 这样的数据库中获取同义词列表? 我想通过 REST-API 向 elasticsearch 动态添加同义词。
最佳答案
使用同义词有两种方法:
- 在编制索引时扩展它们,
- 在查询时扩展它们。
不建议在查询时扩展同义词,因为它会引发以下问题:
- 评分,因为同义词有不同的文档频率,
- 多标记同义词,因为查询解析器在空格处拆分。
有关此的更多详细信息,请访问 http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.SynonymFilterFactory (在 Solr wiki 上,但也与 ElasticSearch 相关)。
因此推荐的方法是在索引时扩展同义词。在您的情况下,如果同义词列表是动态管理的,则意味着您应该重新索引每个包含其同义词列表已更新的术语的文档,以便在更新前后分析的文档之间的评分保持一致。我并不是说这是不可能的,但它需要一些工作,并且可能会引发索引中高频同义词的性能问题。
关于lucene - 动态更改 elasticsearch 同义词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7272368/