【问题标题】:Modifying relevance score in elasticsearch using results from another query使用来自另一个查询的结果修改弹性搜索中的相关性分数
【发布时间】:2016-07-21 21:24:00
【问题描述】:

我正在做的一个项目使用 elasticsearch 作为搜索引擎。我还使用图形数据库来跟踪用户操作以及查询、点击等之间的关系。

我想做的是将图形数据库中的查询及其最高结果索引到elasticsearch中,因此在查询时,我可以通过图形数据库提供的分数来提高elasticsearch _score。这在弹性搜索本身中可能吗?还是我需要在外部进行提升?

【问题讨论】:

  • 您是否打算将图形数据库查询的结果存储在 ES 中的某种临时索引中?还是所有文档都在一个 ES 索引中?
  • @macebalp 我正在考虑将备用排名存储在另一个索引中,例如alt_rankings,我查询包含给定搜索词的排名靠前的文档的文档。同时,我想查询 ES 排名靠前的文档的其他主要索引。然后,我想将 ES 的分数与在给定查询、文档对的 alt_rankings 索引中找到的分数结合起来。
  • @LukeLaFountaine 这个成功了吗?

标签: search elasticsearch lucene search-engine


【解决方案1】:

如果我理解您的问题,您的主要结果来自另一个来源(图形数据库),并且该分数高度依赖于每个查询,就像 Elasticsearch 一样。 ES 中的Script score 函数不适合此任务,因为除了访问所有索引文档的字段之外,您可以传递给它的参数有限。所以我能看到的唯一选择是:

  1. 索引包括外部分数在内的主要结果,然后使用上述脚本分数或更简单的function score 执行查询。请注意,除了明显的效率缺陷(ES 上的索引负载、往返等)之外,该索引将仅包含文档的子集,并且会极大地影响术语的相关性。
  2. 过滤 ES 索引并在外部结合结果,计算出适合您的新分数。我会建议这个,请注意,如果您只想获取第一次查询找到的文档,您应该尝试按他们的 ID 进行 过滤,例如 thisthis,具体取决于您的版本,所以ES 分数仅由您要查找的字词及其相关性组成。

【讨论】:

    【解决方案2】:

    通过分数提升elasticsearch_score

    您可以在弹性搜索查询期间使用function score query 提高文档的分数。

    【讨论】:

    • 如何在函数分数查询中查询备用分数?这似乎只适用于固定函数或要提升的文档上的字段函数。
    • 看看field value factor function score。您可以将 es 分数与字段的值结合起来。
    • 我知道功能分数查询的东西,但不确定这是否能够满足这种需求。据我所知,您要提升的字段需要是正在提升的同一个文档的一部分。有没有办法根据另一个查询中的文档字段来提升它?
    猜你喜欢
    • 2017-10-22
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-10
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多