gpt4 book ai didi

elasticsearch - Elasticsearch高级自动完成

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

我想使用Elasticsearch自动完成用户输入。现在,有大量的教程如何做到这一点,但是没有涉及到非常详细的内容。

我在查询中遇到的最后一个问题是,它应将不是真正的“自动完成”结果的得分降低。例:
是:

我输入:“床”

我发现:“床”,“大床”,“花式床”,“床架”

想:

我输入:“床”

我发现:“床”,“床架”,[其他“床XXX”结果],“花式床”,“大床”

因此,如果有必要,我希望Elasticsearch首先完成“右侧”的操作。然后使用前面带有单词的结果。
我已经尝试了完成建议器,但我没有做其他我想做的事情,但是也遇到了同样的问题。

在德语中,有很多单词示例,例如Bigbed(我知道这不是英语中的真实单词。但是我不希望这些单词获得很高的结果。但是由于它们的匹配度比Bed Frame更紧密(因为2 token )它们显示的很高。

这是我目前的查询:

POST autocompletion/_search?pretty
{
"query": {
"function_score": {
"query": {
"match": {
"keyword": {
"query": "Bed",
"fuzziness": 1,
"minimum_should_match": "100%"
}
}
},
"field_value_factor": {
"field": "bias",
"factor": 1
}
}
}
}

最佳答案

如果您使用像https://www.elastic.co/guide/en/elasticsearch/reference/current/search-suggesters-completion.html所述的elasticsearch完成建议器,则在查询时类似:

{
"suggest": {
"song-suggest" : {
"prefix" : "bed",
"completion" : {
"field" : "suggest"
}
}
}
}

你会得到:
{
"took": 13,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 0,
"max_score": 0.0,
"hits": []
},
"suggest": {
"song-suggest": [
{
"text": "bed",
"offset": 0,
"length": 3,
"options": [
{
"text": "Bed",
"_index": "autocomplete",
"_type": "_doc",
"_id": "1",
"_score": 34.0,
"_source": {
"suggest": {
"input": [
"Bed"
],
"weight": 34
}
}
},
{
"text": "Bed Frame",
"_index": "autocomplete",
"_type": "_doc",
"_id": "3",
"_score": 34.0,
"_source": {
"suggest": {
"input": [
"Bed Frame"
],
"weight": 34
}
}
}
]
}
]
}
}

如果要改为使用 search API,则可以使用2个查询:
  • 前缀查询“bed ****”
  • ,术语以“bed”开头

  • 这里的映射:
    {
    "mappings": {
    "_doc" : {
    "properties" : {
    "suggest" : {
    "type" : "text",
    "fields" : {
    "keyword" : {
    "type" : "keyword"
    }
    }
    }
    }
    }
    }

    这里是搜索查询:
    {
    "query" : {
    "bool" : {
    "must" : [
    {
    "match" : {
    "suggest" : "Bed"
    }
    }
    ],
    "should" : [
    {
    "prefix" : {
    "suggest.keyword" : "Bed"
    }
    }
    ]
    }
    }
    }

    should子句将从“Bed”开始增加文档。等等!

    关于elasticsearch - Elasticsearch高级自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52111186/

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