gpt4 book ai didi

ElasticSearch 边缘NGram

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

我有以下设置和分析器:

put /tests
{
"settings": {
"analysis": {
"analyzer": {
"standardWithEdgeNGram": {
"tokenizer": "standard",
"filter": ["lowercase", "edgeNGram"]
}
},
"tokenizer": {
"standard": {
"type": "standard"
}
},
"filter": {
"lowercase": {
"type": "lowercase"
},
"edgeNGram": {
"type": "edgeNGram",
"min_gram": 2,
"max_gram": 15,
"token_chars": ["letter", "digit"]
}
}
}
},
"mappings": {
"test": {
"_all": {
"analyzer": "standardWithEdgeNGram"
},
"properties": {
"Name": {
"type": "string",
"analyzer": "standardWithEdgeNGram"
}
}
}
}
}

我将以下数据发布到其中:

POST /tests/test
{
"Name": "JACKSON v. FRENKEL"
}

这是我的查询:

GET /tests/test/_search
{
"query": {
"match": {
"Name": "jax"
}
}
}

我得到了这个结果:

{
"took": 2,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.19178301,
"hits": [
{
"_index": "tests",
"_type": "test",
"_id": "lfOxb_5bS86_CMumo_ZLoA",
"_score": 0.19178301,
"_source": {
"Name": "JACKSON v. FRENKEL"
}
}
]
}
}

有人可以向我解释一下“Name”中的任何地方都没有“jax”,并且它仍然可以匹配吗?

提前致谢

最佳答案

一个match查询对其给定值进行分析。默认情况下,使用 standardWithEdgeNGram 分析 "jax",其中包括将其排列为 ["ja", "ax"] 的 n-gram 分析>,其中第一个与分析的 “JACKSON v. FRENKEL” 中的 “ja” 匹配。

如果您不希望出现此行为,您可以使用 analyzer 字段指定不同的分析器来匹配,例如 keyword :

GET /tests/test/_search
{
"query": {
"match": {
"Name": "jax",
"analyzer" : "keyword"
}
}
}

关于ElasticSearch 边缘NGram,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20896317/

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