【问题标题】:Document Similarity in ElasticSearchElasticSearch 中的文档相似性
【发布时间】:2014-06-09 14:53:59
【问题描述】:

我想计算在 elasticsearch 中索引的两个文档之间的相似度。我知道它可以使用术语向量在 lucene 中完成。直接的方法是什么?

我发现有一个相似性模块正是这样做的: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/index-modules-similarity.html

如何将它集成到我的系统中?我正在使用 pyelasticsearch 调用 elasticsearch 命令,但如果需要,我愿意使用 REST api 进行相似性。

【问题讨论】:

  • Javanna 有一篇很棒的文章,介绍了 MLT 查询和 MLT API 之间的区别。这应该有助于澄清差异并为您提供有关其工作原理的更多信息。 stackoverflow.com/a/15320512/3075507
  • 希望我的回答对您有所帮助,有任何问题都可以提出来。
  • @Michaelatqbox.io 答案并没有解决我面临的问题。 MLT 查询和 MLT api 都可以帮助您搜索“关闭”文档。我想测量两个文档之间的紧密度。应该看到第一个问题比较难,但是我没有办法解决第二个问题。期待你的答复。问题也写在这里:grokbase.com/t/gg/elasticsearch/131b9aa8xg/…

标签: search solr lucene elasticsearch mlt


【解决方案1】:

我认为 Elasticsearch 文档很容易被误解。

这里的“相似性”不是文档或字段的比较,而是一种根据查询中的匹配项对匹配文档进行评分的机制。

文档说明:

A similarity (scoring / ranking model) defines how matching documents are scored.

Elasticsearch 支持的相似度算法是基于语料库(索引)中词条分布的概率模型。

关于术语向量,这也可能被误解。

这里的“术语向量”是指文档中可以轻松查询的术语的统计信息。似乎任何跨术语向量的相似性测量都必须在您的应用程序后查询中完成。关于术语向量的文档说明:

Returns information and statistics on terms in the fields of a particular document.

如果您需要在非常大的语料库上使用高性能(快速)相似性度量,您可能会考虑将存储在索引中的文档进行低秩嵌入,以进行近似最近邻搜索。在您的 KNN 查找之后,这大大减少了候选集,您可以为排名进行更昂贵的度量计算。

这是评估近似 KNN 解决方案的绝佳资源: https://github.com/erikbern/ann-benchmarks

【讨论】:

    猜你喜欢
    • 2018-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-09
    相关资源
    最近更新 更多