gpt4 book ai didi

当单词以 n-gram 开头时,Elasticsearch Edge NGram 分词器得分更高

转载 作者:行者123 更新时间:2023-11-29 02:53:55 28 4
gpt4 key购买 nike

假设有以下与 Edge NGram Tokenizer 的映射:

{
"settings": {
"analysis": {
"analyzer": {
"autocomplete_analyzer": {
"tokenizer": "autocomplete_tokenizer",
"filter": [
"standard"
]
},
"autocomplete_search": {
"tokenizer": "whitespace"
}
},
"tokenizer": {
"autocomplete_tokenizer": {
"type": "edge_ngram",
"min_gram": 1,
"max_gram": 10,
"token_chars": [
"letter",
"symbol"
]
}
}
}
},
"mappings": {
"tag": {
"properties": {
"id": {
"type": "long"
},
"name": {
"type": "text",
"analyzer": "autocomplete_analyzer",
"search_analyzer": "autocomplete_search"
}
}
}
}
}

并且索引了以下文档:

POST /tag/tag/_bulk
{"index":{}}
{"name" : "HITS FIND SOME"}
{"index":{}}
{"name" : "TRENDING HI"}
{"index":{}}
{"name" : "HITS OTHER"}

然后搜索

{
"query": {
"match": {
"name": {
"query": "HI"
}
}
}
}

产生所有相同的分数,或 TRENDING - HI得分高于其他人之一。

如何配置,以更高的分数显示实际以搜索者 n-gram 开头的条目?在这种情况下,HITS FIND SOMEHITS OTHER得分高于TRENDING HI ;同时TRENDING HI应该在结果中。

还使用了荧光笔,所以给定的解决方案不应该搞砸。

查询中使用的荧光笔是:

 "highlight": {
"pre_tags": [
"<"
],
"post_tags": [
">"
],
"fields": {
"name": {}
}
}

match_phrase_prefix 一起使用弄乱了突出显示,产生 <H><I><T><S> FIND SOME仅搜索 H 时.

最佳答案

您必须了解 elasticsearch/lucene 如何分析您的数据并计算搜索分数。

<强>1。分析API

https://www.elastic.co/guide/en/elasticsearch/reference/current/_testing_analyzers.html这将向您展示 elasticsearch 将存储什么,在您的情况下:

T / TR / TRE /.... TRENDING / / H / HI

<强>2。得分

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html

bool 查询通常用于构建需要特定用例的复杂查询。使用must过滤文档,然后使用should进行评分。一个常见的用例是对同一字段使用不同的分析器(通过在映射中使用关键字 fields,您可以对同一字段进行不同的分析)。

<强>3。不要弄乱突出显示

根据文档:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-highlighting.html#specify-highlight-query

您可以添加一个额外的查询:

{
"query": {
"bool": {
"must" : [
{
"match": {
"name": "HI"
}
}
],
"should": [
{
"prefix": {
"name": "HI"
}
}
]
}
},
"highlight": {
"pre_tags": [
"<"
],
"post_tags": [
">"
],
"fields": {
"name": {
"highlight_query": {
"match": {
"name": "HI"
}
}
}
}
}
}

关于当单词以 n-gram 开头时,Elasticsearch Edge NGram 分词器得分更高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53238598/

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