gpt4 book ai didi

elasticsearch - Elasticsearch:为什么完全匹配的得分低于部分匹配的得分

转载 作者:行者123 更新时间:2023-12-02 23:47:03 25 4
gpt4 key购买 nike

我的问题

我搜索单词form,但完全匹配的单词form不在结果中。有什么办法解决这个问题?

我的搜索查询

{
"query": {
"match": {
"word": "form"
}
}
}

结果
word             score
--------------------------
formulation 10.864353
formaldehyde 10.864353
formless 10.864353
formal 10.84412
formerly 10.84412
forma 10.84412
formation 10.574185
formula 10.574185
formulate 10.574185
format 10.574185
formally 10.574185
form 10.254687
former 10.254687
formidable 10.254687
formality 10.254687
formative 10.254687
ill-formed 10.054999
in form 10.035862
pro forma 9.492243

开机自检my_index / _analyze

搜索中的单词 form仅具有一个 token form

在索引中, form标记为[“f”,“fo”,“for”,“form”]; formulation标记为[“f”,“fo”,...,“公式”,“公式”]。

我的配置

过滤
        "edgengram_filter": {
"type": "edge_ngram",
"min_gram": 1,
"max_gram": 20
}

分析仪
      "analyzer": {
"abc_vocab_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"keyword_repeat",
"lowercase",
"asciifolding",
"edgengram_filter",
"unique"
]
},
"abc_vocab_search_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"keyword_repeat",
"lowercase",
"asciifolding",
"unique"
]
}
}

映射
        "word": {
"type": "text",
"analyzer": "abc_vocab_analyzer",
"search_analyzer": "abc_vocab_search_analyzer"
}

最佳答案

通过实现edge-ngram过滤器,并且form是与之相似的单词的子字符串,可以以您所看到的方式获得结果。基本上在倒排索引中,它还将存储包含formulationformal等的文档ID。

因此,您的相关性也将以这种方式进行计算。您可以引用this链接,我特别建议您仔细阅读Default SimilarityBM25部分。尽管当前的默认相似度为BM25,但是该链接将帮助您了解评分的工作方式。

您将需要创建另一个同级字段,您可以在should子句中应用它。您可以继续使用keyword创建Term Query子字段,但需要注意区分大小写。

相反,如@Val所述,您可以使用标准分析器创建text字段的同级对象。

对应:

   {
"word":{
"type": "text",
"analyzer": "abc_vocab_analyzer",
"search_analyzer": "abc_vocab_search_analyzer"
"fields":{
"standard":{
"type": "text"
}
}
}
}

查询:
POST <your_index_name>/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"word": "form"
}
}
],
"should": [ <---- Note this
{
"match": {
"word.standard": "form"
}
}
]
}
}
}

让我知道这是否有帮助!

关于elasticsearch - Elasticsearch:为什么完全匹配的得分低于部分匹配的得分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60523240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com