gpt4 book ai didi

n-gram - ElasticSearch n-gram tokenfilter 找不到部分单词

转载 作者:行者123 更新时间:2023-11-29 02:45:58 24 4
gpt4 key购买 nike

我一直在为我的一个新项目使用 ElasticSearch。我已将默认分析器设置为使用 ngram 标记过滤器。这是我的 elasticsearch.yml 文件:

index:
analysis:
analyzer:
default_index:
tokenizer: standard
filter: [standard, stop, mynGram]
default_search:
tokenizer: standard
filter: [standard, stop]

filter:
mynGram:
type: nGram
min_gram: 1
max_gram: 10

我创建了一个新索引并向其中添加了以下文档:

$ curl -XPUT http://localhost:9200/test/newtype/3 -d '{"text": "one two three four five six"}'
{"ok":true,"_index":"test","_type":"newtype","_id":"3"}

但是,当我使用查询 text:hreetext:ive 或任何其他部分术语进行搜索时,ElasticSearch 不会返回该文档。它仅在我搜索确切的术语(如 text:two)时返回文档。

我也曾尝试更改配置文件,使 default_search 也使用 ngram 标记过滤器,但结果是一样的。我在这里做错了什么,我该如何纠正?

最佳答案

不确定 default_* 设置。但是应用指定 index_analyzer 和 search_analyzer 的映射是可行的:

curl -XDELETE localhost:9200/twitter
curl -XPOST localhost:9200/twitter -d '
{"index":
{ "number_of_shards": 1,
"analysis": {
"filter": {
"mynGram" : {"type": "nGram", "min_gram": 2, "max_gram": 10}
},
"analyzer": { "a1" : {
"type":"custom",
"tokenizer": "standard",
"filter": ["lowercase", "mynGram"]
}
}
}
}
}
}'

curl -XPUT localhost:9200/twitter/tweet/_mapping -d '{
"tweet" : {
"index_analyzer" : "a1",
"search_analyzer" : "standard",
"date_formats" : ["yyyy-MM-dd", "dd-MM-yyyy"],
"properties" : {
"user": {"type":"string", "analyzer":"standard"},
"message" : {"type" : "string" }
}
}}'

curl -XPUT 'http://localhost:9200/twitter/tweet/1' -d '{
"user" : "kimchy",
"post_date" : "2009-11-15T14:12:12",
"message" : "trying out Elastic Search"
}'

curl -XGET localhost:9200/twitter/_search?q=ear
curl -XGET localhost:9200/twitter/_search?q=sea

curl -XGET localhost:9200/twitter/_mapping

关于n-gram - ElasticSearch n-gram tokenfilter 找不到部分单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5044674/

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