当前位置: 首页 > 面试题库 >

动态更改Elasticsearch同义词

帅博简
2023-03-14
问题内容

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


问题答案:

使用同义词有两种方法:

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

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

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

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

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



 类似资料:
  • 问题内容: 我正在从数据库中成功获取数据值。我也将它们存储到一个数组中。我需要将String数组作为项的加载,以响应执行的关键操作。每当获取按键值时,如何获取按键值,就如何重新加载项目。相反,我需要动态刷新项目。 问题答案:

  • 问题内容: 我正在以编程方式/动态方式创建原型bean。我希望启动后的这些bean在jmx控制台中。我如何区分它们?我正在使用注释以便将我的bean添加到jmx中, 我需要动态注入objectName。知道我该怎么办吗? 这是我的jmx配置: 问题答案: 您可以使用JMX命名策略来执行此操作。在工作中,我们使用一个接口: 我已经发布了实现RuntimeMetadataNamingStrategy命

  • 问题内容: 我想构建一个表格,该表格可以根据其他组件的状态动态更改可见的组件。 例如,…有一些文本框和一些复选框,并且如果用户激活了某个复选框,则应该出现一堆其他输入元素。 我可以使用JSF 2.0 + Tomahawk来做到这一点吗,还是必须让另一个库来做到这一点?我该怎么办呢?没有AJAX,这将无法工作,对吗? 提前致谢! 问题答案: Ajax是实现此目的的便捷方法,而JSF 2.0捆绑了aj

  • 问题内容: 我正在尝试创建一个测试分析器,以对Elastic Search的分析进行实验。我创建了一个索引“ mytest”,该索引可用且可搜索,但是当我尝试创建自定义分析器时,出现以下错误 现在,我不确定更新设置的限制,但是在文档中找不到任何内容。我可以在创建索引时创建分析,但是更新不起作用。 使用以下来源创建分析器 有任何想法吗 ? 问题答案: 当索引处于打开状态时,您无法更新索引的设置。您需

  • 问题内容: 在Windows计算机上使用com.sun.tools.attach API时,调用以下命令时出现以下错误 java.lang.UnsatisfiedLinkError:java.library.path中没有附加 原因是缺少attach.dll。attach.dll位于。当启动我的Java程序时,一切正常,没有错误输出。 现在,我不想添加每个Java程序来启动这个丑陋的JVM参数。因

  • 问题内容: 我有一个Spring应用程序,我想动态更改数据源。当输入DS URL时,Spring Bean和所有依赖项将自动更新。我知道这有些奇怪,但是无论如何我都想实现。我的Spring配置如下: 问题是: JDBC URL存储在属性中,可以在运行时更改它。 更改URL后,我需要重新创建数据源,可能还需要重新创建相关对象。我不知道Spring如何优雅地做呢? 我知道Spring确实可以基于一个键