gpt4 book ai didi

elasticsearch - 如何在Elasticsearch中进行部分搜索并获得相关分数

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

我是Elasticsearch的新手,正在尝试进行一些搜索。
我有类似以下对象的名称:

Homework
work
jobroles
jobs
我正在使用通配符查询,但每个文档的返回分数均为1.0。
我要根据匹配程度来得分。防爆
例如如果我键入

work

score of work > homework

最佳答案

这是一个好问题,直接无法在上面获得完全匹配,您需要的是ngram分析器,它提供部分匹配,而另一个字段则以小写形式存储确切的标记(使用标准分析器的文本字段将解决此问题)。
我已经重现了您的问题,并使用上述方法解决了该问题,请参阅my blog on autocomplete和我的this SO answer,以深入了解各种自动完成/部分搜索及其原因/内容/方式。
工作实例
创建索引映射

{
"settings": {
"analysis": {
"filter": {
"autocomplete_filter": {
"type": "ngram",
"min_gram": 1,
"max_gram": 10
}
},
"analyzer": {
"autocomplete": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase",
"autocomplete_filter"
]
}
}
},
"index.max_ngram_diff" : 10
},
"mappings": {
"properties": {
"title": {
"type": "text",
"analyzer": "autocomplete",
"search_analyzer": "standard"
},
"title_lowercase" :{
"type" : "text"
}
}
}
}
索引您的样本文档
{
"title" : "Homework",
"title_lowercase" : "Homework"
}

{
"title" : "work",
"title_lowercase" : "work"
}
搜索查询
{
"query": {
"bool": {
"should": [
{
"match": {
"title": {
"query": "work"
}
}
},
{
"match": {
"title_lowercase": {
"query": "work"
}
}
}
]
}
}
}
和预期结果
 "hits": [
{
"_index": "internaledge",
"_type": "_doc",
"_id": "1",
"_score": 0.9926754, /note score of `work` is much higher than`homework`
"_source": {
"title": "work",
"title_lowercase": "work"
}
},
{
"_index": "internaledge",
"_type": "_doc",
"_id": "2",
"_score": 0.2995283,
"_source": {
"title": "Homework",
"title_lowercase": "Homework"
}
}
]

关于elasticsearch - 如何在Elasticsearch中进行部分搜索并获得相关分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63290866/

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