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

在索引之前检查Elasticsearch文档的相似性

白镜
2023-03-14
问题内容

好了,在整日努力梳理头发之后,我决定从社区中获取一些建议。

应该提到的是,我对Elasticsearch还是相当陌生。

我的想法是,我有一个包含一些文档的ES索引,并且仅当尚未索引具有相似字段内容(但不一定等于)的现有文档时,才需要索引新文档。

我可以在多个字段上执行匹配查询并获得查询的全局分数,但是由于该分数不是可用最大分数的百分比,因此我不确定如何设置阈值来确定是否可以插入文档。

我显然对ES评分系统有些困惑。在此先感谢您能提供的所有帮助。

编辑:

作为一个基本的例子

这已经被索引:

{
  "title": "My first blog entry",
  "text":  "Just trying this out...",
  "date":  "2014/01/01"
}

这是新的,但不应索引,因为字段不相等但太相似了:

{
  "title": "My first blog entries",
  "text":  "Just trying it out...",
  "date":  "2014/01/01"
}

这是新的,应该建立索引:

{
  "title": "My second entry for this blog",
  "text":  "I am just trying out a few things",
  "date":  "2014/01/01"
}

因此,它基本上是在对先前的索引进行重复数据删除,并基于我所追求的字段相似性:)


问题答案:

more_like_this查询是满足您需求的完美解决方案。

在此类查询中,您可以在该like字段中提供人工文档,这些文档将与索引中的文档进行匹配以实现相似性。默认情况下,它们将使用所有可用字段,但是您也可以选择要比较的有限数量的字段。

大多数情况下,此查询用于检索类似于用户可能正在查看或用户已选择的一个或几个文档的文档。但是,您可能可以使用此功能来分析返回文档的分数(如果有),并决定是否对您的文档建立索引。

请参阅上面链接的文档页面以获取参数的完整列表。



 类似资料:
  • 问题内容: 我想在elasticsearch中检查索引是否存在。如果不存在,则应创建索引并执行其他功能。我试图找到一个解决方案,但是没有找到完美的解决方案。任何人都可以有解决此问题的任何解决方案。 我正在使用Elasticsearch库。 问题答案: 根据索引操作和源代码,以下应该工作

  • > 下载了。90.6,解压缩,将弹性搜索移动到/usr/share/elasticsearch(在centosx64 6.4上具有chmod 777-r权限),将集群重命名为somethingdupd,并启动服务器。 根据文档,我应该能够做到这一点。但它也什么也不做:

  • 问题内容: 我正在尝试了解如何在Elasticsearch中更新索引文档。我不明白它是如何工作的?什么是该API指的是在做什么?假设您有一个带有嵌套文档的文档,您需要做什么来更新它? 删除文档然后索引“已更新”版本与普通更新之间有什么区别? 问题答案: 更新请求从Elasticsearch检索源,对其进行修改并将其索引回Elasticsearch。如果您已经具有使用更新的文档副本,则毫无意义。仅索

  • 我正在使用liferay 7.3.5并尝试创建elasticSearch。通过我在ElasticSearch的第一次体验,我试图为数据库中的一个实体编制索引。我正确构建了搜索平台,并在特定节点内以远程模式使用。对于索引,我遵循了本教程中的一个接一个步骤 创建留言簿索引器 服务层的索引处理也做到了,它工作正常,在调试模式下,这可以清楚地看到,条目被索引,转换成文档,并存储在Liferay中对应于公司

  • 我正在使用最新版本的elasticsearch(在docker中)和spring boot(最新版本)应用程序,试图在其中搜索类似的文档。我的文档类有一个字符串字段: 当我使用内置的方法时,我的查询得到了很多结果: 然而,我不知道这些文档有多相似,因为它只是我的文档对象的一个页面。在执行查询时,能够看到相似性分数或设置相似性阈值将非常棒。我应该做些不同的事情吗?

  • Lucene提到- 但是我们可以通过IndexWriter.setMaxFieldLength(int)对其进行配置。 我在ElasticSearch-http://localhost:9200/twitter中创建了一个索引,并发布了一个包含40,000个术语的文档。 映射- 我用message字段索引了一个文档,有40,000个术语-message:“text1text2....text400