gpt4 book ai didi

lucene - 在Elasticsearch中,当我通过ngram过滤器运行单词时,为什么会丢失整个单词 token ?

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

看来,如果我通过ngram过滤器运行单词或短语,则原始单词不会被索引。取而代之的是,我只能得到最大为max_gram值的单词块。我希望原始单词也能被索引。我正在使用Elasticsearch 0.20.5。如果我使用带有ngrams的过滤器设置索引,如下所示:

CURL -XPUT 'http://localhost:9200/test/' -d '{
"settings": {
"analysis": {
"filter": {
"my_ngram": {
"max_gram": 10,
"min_gram": 1,
"type": "nGram"
},
"my_stemmer": {
"type": "stemmer",
"name": "english"
}
},
"analyzer": {
"default_index": {
"filter": [
"standard",
"lowercase",
"asciifolding",
"my_ngram",
"my_stemmer"
],
"type": "custom",
"tokenizer": "standard"
},
"default_search": {
"filter": [
"standard",
"lowercase"
],
"type": "custom",
"tokenizer": "standard"
}
}
}
}
}'

然后,我在文档中写了一个很长的字:
CURL -XPUT 'http://localhost:9200/test/item/1' -d '{
"foo" : "REALLY_REALLY_LONG_WORD"
}'

我查询这个长词:
CURL -XGET 'http://localhost:9200/test/item/_search' -d '{
"query":
{
"match" : {
"foo" : "REALLY_REALLY_LONG_WORD"
}
}
}'

我得到0个结果。如果查询该单词的10个字符,我会得到结果。当我运行这个:
curl -XGET 'localhost:9200/test/_analyze?text=REALLY_REALLY_LONG_WORD

我得到了几吨克,但不是原来的话。我是否缺少配置以使它按我想要的方式工作?

最佳答案

如果您想保留完整的词组单词,请为您保留一个“未分析”值或使用关键字 token 生成器的值使用多字段映射。

同样,在搜索具有nGram标记值的字段时,您可能还应该使用nGram标记器进行搜索,然后n个字符的限制也适用于搜索短语,您将获得预期的结果。

关于lucene - 在Elasticsearch中,当我通过ngram过滤器运行单词时,为什么会丢失整个单词 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15395853/

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