elasticsearch Elasticsearch 5.5:姓名搜索需要帮助(职位得分更高),elasticsearch,elasticsearch" /> elasticsearch Elasticsearch 5.5:姓名搜索需要帮助(职位得分更高),elasticsearch,elasticsearch" />

elasticsearch Elasticsearch 5.5:姓名搜索需要帮助(职位得分更高)

elasticsearch Elasticsearch 5.5:姓名搜索需要帮助(职位得分更高),elasticsearch,elasticsearch,我试着做一个自动补全,谁给了打字单词位置更高的分数。按分数排序,然后按名称排序 我的目标: { "persons_index": { "settings": { "index": { "number_of_shards": "5", "provided_name": "persons_index", "creation_date": "149988180

我试着做一个自动补全,谁给了打字单词位置更高的分数。按分数排序,然后按名称排序

我的目标:

{
    "persons_index": {
        "settings": {
            "index": {
                "number_of_shards": "5",
                "provided_name": "persons_index",
                "creation_date": "1499881803116",
                "analysis": {
                    "filter": {
                        "ascii_folding_preserve_original": {
                            "type": "asciifolding",
                            "preserve_original": "true"
                        },
                        "names_synonym_filter": {
                            "type": "synonym",
                            "synonyms": [
                                "aage,åge",
                                "gaard,gård"
                            ]
                        }
                    },
                    "analyzer": {
                        "my_analyzer": {
                            "filter": [
                                "lowercase",
                                "trim",
                                "names_synonym_filter",
                                "ascii_folding_preserve_original"
                            ],
                            "type": "custom",
                            "tokenizer": "standard"
                        }
                    }
                },
                "number_of_replicas": "1",
                "uuid": "LxMHLha-R02i__S7gDWBtA",
                "version": {
                    "created": "5050099"
                }
            }
        }
    }
}
{
    "persons_index": {
        "mappings": {
            "persons_type": {
                "properties": {
                    "fieldDisplayFullName": {
                        "type": "text",
                        "norms": false,
                        "analyzer": "my_analyzer"
                    },
                    "fieldSort": {
                        "type": "text",
                        "norms": false,
                        "analyzer": "keyword",
                        "fielddata": true
                    }
                }
            }
        }
    }
}
Peter Christensen (_score: 18.968887)
Peter Christian Engelhardt (_score: 18.968887)
Peter Christian Grau (_score: 18.968887)
Peter Christian Reumert Krogsgaard (_score: 18.968887)
Peter Christian Vagnbo Jørgensen (_score: 18.968887)
Peter Christoffersen (_score: 18.968887)
Peter Bruun Christensen (_score: 1.0512933)
Peter Dits Christensen (_score: 1.0512933)
Peter Fjeldsø Christensen (_score: 1.0512933)
{
  "explain": false,
  "size" : 50,
  "sort": [
        "_score",
        {
            "fieldSort": {
                "order": "asc"
            }
        }
    ],
  "query": {
    "bool" : {
      "must" : {
        "bool" : {
              "minimum_should_match":"2",
              "should" : [
                {"match" : { "fieldDisplayFullName" : "peter" }},
                {"wildcard" : { "fieldDisplayFullName" : "chr*" }}
              ]
        }
      },
       "should" : [
            {"span_first" : {
              "match" : {
                  "span_term" : { "fieldDisplayFullName" : "peter" }
              },
              "end" : 1,
              "boost" : 50.0
            }},
            {"span_first" : {
              "match" : {
                  "span_multi":{
                    "match":{
                        "wildcard" : { "fieldDisplayFullName" : "chr*" }
                    }
                  }
              },
              "end" : 2,
              "boost" : 50.0
            }}
        ]
    }
  }
}
键入“宠物”

结果:

peter christensen
peter christian grau
peter christian reumert krogsgaard
peter bruun christensen
anders petersen
peter christensen
peter christian grau
peter christian reumert krogsgaard
peter bruun christensen
键入“peter chr”

结果:

peter christensen
peter christian grau
peter christian reumert krogsgaard
peter bruun christensen
anders petersen
peter christensen
peter christian grau
peter christian reumert krogsgaard
peter bruun christensen
上面成功了,我很高兴,但后来发生了一些奇怪的事情,当有重复的“彼得·克里斯滕森”。现在,结果如下所示:

peter christian grau
peter christian reumert krogsgaard
peter christensen
peter christensen
peter bruun christensen
我想要这个:

peter christensen
peter christensen
peter christian grau
peter christian reumert krogsgaard
peter bruun christensen
请帮忙

设置:

{
    "persons_index": {
        "settings": {
            "index": {
                "number_of_shards": "5",
                "provided_name": "persons_index",
                "creation_date": "1499881803116",
                "analysis": {
                    "filter": {
                        "ascii_folding_preserve_original": {
                            "type": "asciifolding",
                            "preserve_original": "true"
                        },
                        "names_synonym_filter": {
                            "type": "synonym",
                            "synonyms": [
                                "aage,åge",
                                "gaard,gård"
                            ]
                        }
                    },
                    "analyzer": {
                        "my_analyzer": {
                            "filter": [
                                "lowercase",
                                "trim",
                                "names_synonym_filter",
                                "ascii_folding_preserve_original"
                            ],
                            "type": "custom",
                            "tokenizer": "standard"
                        }
                    }
                },
                "number_of_replicas": "1",
                "uuid": "LxMHLha-R02i__S7gDWBtA",
                "version": {
                    "created": "5050099"
                }
            }
        }
    }
}
{
    "persons_index": {
        "mappings": {
            "persons_type": {
                "properties": {
                    "fieldDisplayFullName": {
                        "type": "text",
                        "norms": false,
                        "analyzer": "my_analyzer"
                    },
                    "fieldSort": {
                        "type": "text",
                        "norms": false,
                        "analyzer": "keyword",
                        "fielddata": true
                    }
                }
            }
        }
    }
}
Peter Christensen (_score: 18.968887)
Peter Christian Engelhardt (_score: 18.968887)
Peter Christian Grau (_score: 18.968887)
Peter Christian Reumert Krogsgaard (_score: 18.968887)
Peter Christian Vagnbo Jørgensen (_score: 18.968887)
Peter Christoffersen (_score: 18.968887)
Peter Bruun Christensen (_score: 1.0512933)
Peter Dits Christensen (_score: 1.0512933)
Peter Fjeldsø Christensen (_score: 1.0512933)
{
  "explain": false,
  "size" : 50,
  "sort": [
        "_score",
        {
            "fieldSort": {
                "order": "asc"
            }
        }
    ],
  "query": {
    "bool" : {
      "must" : {
        "bool" : {
              "minimum_should_match":"2",
              "should" : [
                {"match" : { "fieldDisplayFullName" : "peter" }},
                {"wildcard" : { "fieldDisplayFullName" : "chr*" }}
              ]
        }
      },
       "should" : [
            {"span_first" : {
              "match" : {
                  "span_term" : { "fieldDisplayFullName" : "peter" }
              },
              "end" : 1,
              "boost" : 50.0
            }},
            {"span_first" : {
              "match" : {
                  "span_multi":{
                    "match":{
                        "wildcard" : { "fieldDisplayFullName" : "chr*" }
                    }
                  }
              },
              "end" : 2,
              "boost" : 50.0
            }}
        ]
    }
  }
}
映射:

{
    "persons_index": {
        "settings": {
            "index": {
                "number_of_shards": "5",
                "provided_name": "persons_index",
                "creation_date": "1499881803116",
                "analysis": {
                    "filter": {
                        "ascii_folding_preserve_original": {
                            "type": "asciifolding",
                            "preserve_original": "true"
                        },
                        "names_synonym_filter": {
                            "type": "synonym",
                            "synonyms": [
                                "aage,åge",
                                "gaard,gård"
                            ]
                        }
                    },
                    "analyzer": {
                        "my_analyzer": {
                            "filter": [
                                "lowercase",
                                "trim",
                                "names_synonym_filter",
                                "ascii_folding_preserve_original"
                            ],
                            "type": "custom",
                            "tokenizer": "standard"
                        }
                    }
                },
                "number_of_replicas": "1",
                "uuid": "LxMHLha-R02i__S7gDWBtA",
                "version": {
                    "created": "5050099"
                }
            }
        }
    }
}
{
    "persons_index": {
        "mappings": {
            "persons_type": {
                "properties": {
                    "fieldDisplayFullName": {
                        "type": "text",
                        "norms": false,
                        "analyzer": "my_analyzer"
                    },
                    "fieldSort": {
                        "type": "text",
                        "norms": false,
                        "analyzer": "keyword",
                        "fielddata": true
                    }
                }
            }
        }
    }
}
Peter Christensen (_score: 18.968887)
Peter Christian Engelhardt (_score: 18.968887)
Peter Christian Grau (_score: 18.968887)
Peter Christian Reumert Krogsgaard (_score: 18.968887)
Peter Christian Vagnbo Jørgensen (_score: 18.968887)
Peter Christoffersen (_score: 18.968887)
Peter Bruun Christensen (_score: 1.0512933)
Peter Dits Christensen (_score: 1.0512933)
Peter Fjeldsø Christensen (_score: 1.0512933)
{
  "explain": false,
  "size" : 50,
  "sort": [
        "_score",
        {
            "fieldSort": {
                "order": "asc"
            }
        }
    ],
  "query": {
    "bool" : {
      "must" : {
        "bool" : {
              "minimum_should_match":"2",
              "should" : [
                {"match" : { "fieldDisplayFullName" : "peter" }},
                {"wildcard" : { "fieldDisplayFullName" : "chr*" }}
              ]
        }
      },
       "should" : [
            {"span_first" : {
              "match" : {
                  "span_term" : { "fieldDisplayFullName" : "peter" }
              },
              "end" : 1,
              "boost" : 50.0
            }},
            {"span_first" : {
              "match" : {
                  "span_multi":{
                    "match":{
                        "wildcard" : { "fieldDisplayFullName" : "chr*" }
                    }
                  }
              },
              "end" : 2,
              "boost" : 50.0
            }}
        ]
    }
  }
}
示例文档

{"fieldSort" : "peter christensen", "fieldDisplayFullName" : "Peter Christensen"}
查询:

{
    "persons_index": {
        "settings": {
            "index": {
                "number_of_shards": "5",
                "provided_name": "persons_index",
                "creation_date": "1499881803116",
                "analysis": {
                    "filter": {
                        "ascii_folding_preserve_original": {
                            "type": "asciifolding",
                            "preserve_original": "true"
                        },
                        "names_synonym_filter": {
                            "type": "synonym",
                            "synonyms": [
                                "aage,åge",
                                "gaard,gård"
                            ]
                        }
                    },
                    "analyzer": {
                        "my_analyzer": {
                            "filter": [
                                "lowercase",
                                "trim",
                                "names_synonym_filter",
                                "ascii_folding_preserve_original"
                            ],
                            "type": "custom",
                            "tokenizer": "standard"
                        }
                    }
                },
                "number_of_replicas": "1",
                "uuid": "LxMHLha-R02i__S7gDWBtA",
                "version": {
                    "created": "5050099"
                }
            }
        }
    }
}
{
    "persons_index": {
        "mappings": {
            "persons_type": {
                "properties": {
                    "fieldDisplayFullName": {
                        "type": "text",
                        "norms": false,
                        "analyzer": "my_analyzer"
                    },
                    "fieldSort": {
                        "type": "text",
                        "norms": false,
                        "analyzer": "keyword",
                        "fielddata": true
                    }
                }
            }
        }
    }
}
Peter Christensen (_score: 18.968887)
Peter Christian Engelhardt (_score: 18.968887)
Peter Christian Grau (_score: 18.968887)
Peter Christian Reumert Krogsgaard (_score: 18.968887)
Peter Christian Vagnbo Jørgensen (_score: 18.968887)
Peter Christoffersen (_score: 18.968887)
Peter Bruun Christensen (_score: 1.0512933)
Peter Dits Christensen (_score: 1.0512933)
Peter Fjeldsø Christensen (_score: 1.0512933)
{
  "explain": false,
  "size" : 50,
  "sort": [
        "_score",
        {
            "fieldSort": {
                "order": "asc"
            }
        }
    ],
  "query": {
    "bool" : {
      "must" : {
        "bool" : {
              "minimum_should_match":"2",
              "should" : [
                {"match" : { "fieldDisplayFullName" : "peter" }},
                {"wildcard" : { "fieldDisplayFullName" : "chr*" }}
              ]
        }
      },
       "should" : [
            {"span_first" : {
              "match" : {
                  "span_term" : { "fieldDisplayFullName" : "peter" }
              },
              "end" : 1,
              "boost" : 50.0
            }},
            {"span_first" : {
              "match" : {
                  "span_multi":{
                    "match":{
                        "wildcard" : { "fieldDisplayFullName" : "chr*" }
                    }
                  }
              },
              "end" : 2,
              "boost" : 50.0
            }}
        ]
    }
  }
}
_搜索?pretty=true&search\u type=dfs\u query\u然后\u fetch

{
  "explain": false,
  "size" : 50,
  "sort": [
        "_score",
        {
            "fieldSort": {
                "order": "asc"
            }
        }
    ],
  "query": {
    "bool" : {
      "must" : {
        "bool" : {
              "minimum_should_match":"2",
              "should" : [
                {"match" : { "fieldDisplayFullName" : "peter" }},
                {"wildcard" : { "fieldDisplayFullName" : "chr*" }}
              ]
        }
      },
       "should" : [
          {"match_phrase_prefix" : { "fieldSort" : {"query" : "peter chr","boost" : 10}}}
        ]
    }
  }
}
结果:

{
    "persons_index": {
        "settings": {
            "index": {
                "number_of_shards": "5",
                "provided_name": "persons_index",
                "creation_date": "1499881803116",
                "analysis": {
                    "filter": {
                        "ascii_folding_preserve_original": {
                            "type": "asciifolding",
                            "preserve_original": "true"
                        },
                        "names_synonym_filter": {
                            "type": "synonym",
                            "synonyms": [
                                "aage,åge",
                                "gaard,gård"
                            ]
                        }
                    },
                    "analyzer": {
                        "my_analyzer": {
                            "filter": [
                                "lowercase",
                                "trim",
                                "names_synonym_filter",
                                "ascii_folding_preserve_original"
                            ],
                            "type": "custom",
                            "tokenizer": "standard"
                        }
                    }
                },
                "number_of_replicas": "1",
                "uuid": "LxMHLha-R02i__S7gDWBtA",
                "version": {
                    "created": "5050099"
                }
            }
        }
    }
}
{
    "persons_index": {
        "mappings": {
            "persons_type": {
                "properties": {
                    "fieldDisplayFullName": {
                        "type": "text",
                        "norms": false,
                        "analyzer": "my_analyzer"
                    },
                    "fieldSort": {
                        "type": "text",
                        "norms": false,
                        "analyzer": "keyword",
                        "fielddata": true
                    }
                }
            }
        }
    }
}
Peter Christensen (_score: 18.968887)
Peter Christian Engelhardt (_score: 18.968887)
Peter Christian Grau (_score: 18.968887)
Peter Christian Reumert Krogsgaard (_score: 18.968887)
Peter Christian Vagnbo Jørgensen (_score: 18.968887)
Peter Christoffersen (_score: 18.968887)
Peter Bruun Christensen (_score: 1.0512933)
Peter Dits Christensen (_score: 1.0512933)
Peter Fjeldsø Christensen (_score: 1.0512933)
{
  "explain": false,
  "size" : 50,
  "sort": [
        "_score",
        {
            "fieldSort": {
                "order": "asc"
            }
        }
    ],
  "query": {
    "bool" : {
      "must" : {
        "bool" : {
              "minimum_should_match":"2",
              "should" : [
                {"match" : { "fieldDisplayFullName" : "peter" }},
                {"wildcard" : { "fieldDisplayFullName" : "chr*" }}
              ]
        }
      },
       "should" : [
            {"span_first" : {
              "match" : {
                  "span_term" : { "fieldDisplayFullName" : "peter" }
              },
              "end" : 1,
              "boost" : 50.0
            }},
            {"span_first" : {
              "match" : {
                  "span_multi":{
                    "match":{
                        "wildcard" : { "fieldDisplayFullName" : "chr*" }
                    }
                  }
              },
              "end" : 2,
              "boost" : 50.0
            }}
        ]
    }
  }
}
“彼得·克里斯坦森(14.909464分)”重复出现

不同查询尝试未成功:

{
    "persons_index": {
        "settings": {
            "index": {
                "number_of_shards": "5",
                "provided_name": "persons_index",
                "creation_date": "1499881803116",
                "analysis": {
                    "filter": {
                        "ascii_folding_preserve_original": {
                            "type": "asciifolding",
                            "preserve_original": "true"
                        },
                        "names_synonym_filter": {
                            "type": "synonym",
                            "synonyms": [
                                "aage,åge",
                                "gaard,gård"
                            ]
                        }
                    },
                    "analyzer": {
                        "my_analyzer": {
                            "filter": [
                                "lowercase",
                                "trim",
                                "names_synonym_filter",
                                "ascii_folding_preserve_original"
                            ],
                            "type": "custom",
                            "tokenizer": "standard"
                        }
                    }
                },
                "number_of_replicas": "1",
                "uuid": "LxMHLha-R02i__S7gDWBtA",
                "version": {
                    "created": "5050099"
                }
            }
        }
    }
}
{
    "persons_index": {
        "mappings": {
            "persons_type": {
                "properties": {
                    "fieldDisplayFullName": {
                        "type": "text",
                        "norms": false,
                        "analyzer": "my_analyzer"
                    },
                    "fieldSort": {
                        "type": "text",
                        "norms": false,
                        "analyzer": "keyword",
                        "fielddata": true
                    }
                }
            }
        }
    }
}
Peter Christensen (_score: 18.968887)
Peter Christian Engelhardt (_score: 18.968887)
Peter Christian Grau (_score: 18.968887)
Peter Christian Reumert Krogsgaard (_score: 18.968887)
Peter Christian Vagnbo Jørgensen (_score: 18.968887)
Peter Christoffersen (_score: 18.968887)
Peter Bruun Christensen (_score: 1.0512933)
Peter Dits Christensen (_score: 1.0512933)
Peter Fjeldsø Christensen (_score: 1.0512933)
{
  "explain": false,
  "size" : 50,
  "sort": [
        "_score",
        {
            "fieldSort": {
                "order": "asc"
            }
        }
    ],
  "query": {
    "bool" : {
      "must" : {
        "bool" : {
              "minimum_should_match":"2",
              "should" : [
                {"match" : { "fieldDisplayFullName" : "peter" }},
                {"wildcard" : { "fieldDisplayFullName" : "chr*" }}
              ]
        }
      },
       "should" : [
            {"span_first" : {
              "match" : {
                  "span_term" : { "fieldDisplayFullName" : "peter" }
              },
              "end" : 1,
              "boost" : 50.0
            }},
            {"span_first" : {
              "match" : {
                  "span_multi":{
                    "match":{
                        "wildcard" : { "fieldDisplayFullName" : "chr*" }
                    }
                  }
              },
              "end" : 2,
              "boost" : 50.0
            }}
        ]
    }
  }
}

看看Elasticsearch是如何进行搜索的,尤其是在(反向文档频率)上

因此,您可以尝试通过忽略IDF来解决此问题。我遇到了一个类似的问题,我通过更改applied-to-querys解决了这个问题

您的配置是否在多个服务器上运行

干杯,多米尼克

用“恒定分数”解决


你好,多米尼克。谢谢你的回答。我刚刚用更多信息更新了我的问题。我正在使用search\u type=dfs\u query\u然后\u fetch。碎片的数量是5?今天晚些时候,我将深入挖掘您提供给我的链接并返回。谢谢JesperThanks Dominik让我走上了正确的方向。在阅读了你的“方法”链接后,我花了5分钟用“恒定分数”来解决问题。谢谢你发布你的解决方案!当心点,多米尼克:)