在建立索引之前检查 Elasticsearch 文档的相似性
Check Elasticsearch document similarity before indexing
好吧,在一整天都想弄清楚我的头发后,我决定从社区获得一些意见。
应该提到的是,我对 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
字段中提供人工文档,这些文档将与索引中的文档进行匹配以获得相似性。默认情况下,它们将使用所有可用字段,但您也可以 select 比较有限数量的字段。
大多数时候,此查询用于检索与用户可能正在查看或用户已 select 编辑的一个或几个文档相似的文档。尽管如此,您还是可以使用此功能来分析返回文档的分数(如果有的话),并决定是否为您的文档编制索引。
请参阅上面链接的文档页面以获取完整的参数列表。
好吧,在一整天都想弄清楚我的头发后,我决定从社区获得一些意见。
应该提到的是,我对 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
字段中提供人工文档,这些文档将与索引中的文档进行匹配以获得相似性。默认情况下,它们将使用所有可用字段,但您也可以 select 比较有限数量的字段。
大多数时候,此查询用于检索与用户可能正在查看或用户已 select 编辑的一个或几个文档相似的文档。尽管如此,您还是可以使用此功能来分析返回文档的分数(如果有的话),并决定是否为您的文档编制索引。
请参阅上面链接的文档页面以获取完整的参数列表。