gpt4 book ai didi

elasticsearch - Elasticsearch未分析字段

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

我有一个分析的字段,其中包含以下内容:“快速的棕色狐狸”,另一个包含:“快速的棕色狐狸”。

我想找到那些明确包含“狐狸”(不是狐狸)的文件。据我所知,我必须创建一个具有已分析且未分析的子字段的多字段(请参阅下面的映射)。但是我该如何查询呢?

这是一个示例(请注意,我的分析器设置为匈牙利语,但我想这在这里无关紧要):

{
"settings" : {
"number_of_replicas": 0,
"number_of_shards": 1,
"analysis" : {
"analyzer" : {
"hu" : {
"tokenizer" : "standard",
"filter" : [ "lowercase", "hu_HU" ]
}
},
"filter" : {
"hu_HU" : {
"type" : "hunspell",
"locale" : "hu_HU",
"language" : "hu_HU"
}
}
}
},
"mappings": {
"foo": {
"_source": { "enabled": true },
"properties": {
"text": {
"type": "string",
"analyzer": "hu",
"store": false,
"fields": {
"raw": {
"type": "string",
"index": "not_analyzed",
"store": false
}
}
}
}
}
}
}

我尝试过的查询:match,term,span_term,query_string。所有这些都在text和text.raw字段上执行。

最佳答案

"index": "not_analyzed"表示将完全不分析此字段(https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-index.html)。因此,它甚至不会被分解成单词。我相信这不是您想要的。
取而代之的是,您需要添加新的分析器,该分析器将仅包含 token 生成器whitespace(https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-whitespace-tokenizer.html):

"analyzer" : {
"hu" : {
"tokenizer" : "standard",
"filter" : [ "lowercase", "hu_HU" ]
},
"no_filter":{
"tokenizer" : "whitespace"
}
}

然后,您需要在您的 Realm 使用这个新的分析仪:
"raw": {
"type": "string",
"analyzer": "no_filter",
"store": false
}

关于elasticsearch - Elasticsearch未分析字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39465297/

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