首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态更改elasticsearch同义词

动态更改elasticsearch同义词
EN

Stack Overflow用户
提问于 2011-09-01 23:10:19
回答 4查看 8.4K关注 0票数 17

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-09-02 00:51:07

使用同义词时有两种方法:

  • 在索引时展开它们,
  • 在查询时展开它们。

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

由于查询解析器在whitespaces.上拆分,因此

  • 计分,因为同义词具有不同的文档频率,所以
  • 多标记同义词

有关这一点的更多详细信息,请访问http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.SynonymFilterFactory (在Solr wiki上,但也与ElasticSearch相关)。

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

票数 16
EN

Stack Overflow用户

发布于 2015-12-11 03:54:51

对于几年前其他答案中提出的解决方案,现在几乎没有新的解决方案。作为插件实现的两种主要方法:

  1. refresh-token-plugin允许实时更新索引。然而,这个插件目前存在一些问题,这源于elasticsearch无法区分搜索时使用的分析器和索引时使用的分析器。

关于这个主题的讨论可以在elastisearch github票务系统上找到:https://github.com/brusic/refresh-token-filters

票数 3
EN

Stack Overflow用户

发布于 2011-09-24 16:17:21

在elasticsearch中更新同义词列表并不是很痛苦。它可以通过打开和关闭来完成,您可以从任何地方驱动它,但需要一些您自己的基础设施。它是这样工作的:

  • 您想要指向当前索引的别名
  • 将新索引文件同步到服务器
  • 使用使用新索引的自定义分析器创建新索引
  • 将内容从当前索引重新构建到新索引

<代码>H19将索引别名从当前索引重新指向新索引<代码>H210<代码>F211

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7272368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档