elasticsearch 对包含所有查询条件的文档给予更多分数,elasticsearch,lucene,information-retrieval,elasticsearch,Lucene,Information Retrieval" /> elasticsearch 对包含所有查询条件的文档给予更多分数,elasticsearch,lucene,information-retrieval,elasticsearch,Lucene,Information Retrieval" />

elasticsearch 对包含所有查询条件的文档给予更多分数

elasticsearch 对包含所有查询条件的文档给予更多分数,elasticsearch,lucene,information-retrieval,elasticsearch,Lucene,Information Retrieval,我在elasticsearch中得分有问题。当用户输入一个包含3个术语的查询时,有时一个文档包含很多两个单词,比包含所有三个单词的文档更核心。例如,如果用户输入“elasticsearch查询教程”,我希望包含所有这些单词的文档得分高于包含大量“教程”和“elasticsearch”术语的文档 PS:我在查询中使用了最小应匹配和shingls。而且他们的排名也提高了很多,他们并没有完全解决这个问题。我需要在lucene的实际评分函数中使用类似查询协调的功能。BM-25弹性材料中是否存在类似的问题

我在elasticsearch中得分有问题。当用户输入一个包含3个术语的查询时,有时一个文档包含很多两个单词,比包含所有三个单词的文档更核心。例如,如果用户输入“elasticsearch查询教程”,我希望包含所有这些单词的文档得分高于包含大量“教程”和“elasticsearch”术语的文档


PS:我在查询中使用了最小应匹配和shingls。而且他们的排名也提高了很多,他们并没有完全解决这个问题。我需要在lucene的实际评分函数中使用类似查询协调的功能。BM-25弹性材料中是否存在类似的问题?

可能的解决方案之一是:


在这种情况下,对于匹配更多的文档,您显然会有更好的位置。但是,这将完全忽略TF IDF或任何其他参数。

在你的情况下,你会考虑这个短语匹配吗?@ BHONDY不一定。我使用短语匹配,这有助于排名很多,但它不能解决我目前的问题。谢谢你的回答,但我不想完全忽略TF-IDF。
{
    "query": {
        "function_score": {
          "query": { "match_all": {} },
          "functions": [
              {
                  "filter": { "match": { "title": "elasticserch" } },
                  "weight": 1
              },
              {
                  "filter": { "match": { "title": "tutorial" } },
                  "weight": 1
              }
          ],
          "score_mode": "sum"
        }
    }
}