gpt4 book ai didi

elasticsearch - elasticsearch n-gram示例澄清

转载 作者:行者123 更新时间:2023-12-02 22:57:54 25 4
gpt4 key购买 nike

引用此处引用的示例
https://www.elastic.co/guide/en/elasticsearch/guide/current/ngrams-compound-words.html

寻找“Adler”会返回结果。
搜索“Adler”将成为对三个词adl,dle和ler的查询:

但是,即使zdl不是其中之一,为什么查询“Zdler”仍返回结果?

GET /my_index/my_type/_search
{
"query": {
"match": {
"text": {
"query": "zdler"
}
}
}
}

将匹配查询应用于“Adler”上的搜索会返回记录-预期的。

但是,对“Zdler”的匹配查询也会返回记录(因为dle和ler匹配)。甚至设置“minimum_should_match”:“100%”也会返回记录-不期望

将字词查询应用于“Adler”上的搜索不会返回任何内容-不会出现这种情况
POST /my_index/my_type/_search
{
"query": {
"term": {
"text": {
"value": "Adler"
}
}
}
}

如何实现仅在“Adler”而不是“Zdler”上搜索返回记录?
 "settings": {
"index": {
"number_of_shards": "5",
"provided_name": "my_index",
"creation_date": "1501069624443",
"analysis": {
"filter": {
"trigrams_filter": {
"type": "ngram",
"min_gram": "3",
"max_gram": "3"
}
},
"analyzer": {
"trigrams": {
"filter": [
"lowercase",
"trigrams_filter"
],
"type": "custom",
"tokenizer": "standard"
}
}
},
"number_of_replicas": "1",
"uuid": "Z5BXi_RjTACzTsR_-Nu9tw",
"version": {
"created": "5040099"
}
}
}

这些是映射
{
"my_index": {
"mappings": {
"my_type": {
"properties": {
"text": {
"type": "text",
"analyzer": "trigrams"
}
}
}
}

最佳答案

match query在抛出查询之前将字段分析器应用于输入查询。这类似地产生用于输入的 token (“zdler”),然后再次匹配反向索引。但是术语查询不会如此,因为它不会对输入值应用字段分析器

匹配查询将“adler”分解为->“a”,“d”,“l”,“e” .....等,然后将它们与倒排索引进行匹配。

尝试了解以下两个查询

POST index5/_search
{
"query": {
"match": {
"text": "zdler"
}
}
}


POST index5/_search
{
"query": {
"term": {
"text": {
"value": "zdler"
}
}
}
}

关于elasticsearch - elasticsearch n-gram示例澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45326580/

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