gpt4 book ai didi

elasticsearch - 大写或小写不区分大小写的elasticsearch

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

我正在使用 flex 搜索,但遇到了问题。如果有人给我提示,我将非常感激。
我想分析由不同条目组成的字段“名称”或“描述”。例如有人要搜索Sara。如果他输入SARA,SAra或sara。他应该能够得到萨拉。
flex 搜索使用分析器,使所有内容变为小写。
无论用户输入大写还是小写名称,我都希望实现不区分大小写的代码,他/她应该得到结果。
我正在使用ngram过滤器搜索名称和小写字母,这使其不区分大小写。但是我想确保即使输入大写或小写的人也能得到结果。
有什么办法可以在 flex 搜索中做到这一点?

{"settings": {

"analysis": {
"filter": {
"ngram_filter": {
"type": "ngram",
"min_gram": 1,
"max_gram": 80
}
},
"analyzer": {
"index_ngram": {
"type": "custom",
"tokenizer": "keyword",
"filter": [ "ngram_filter", "lowercase" ]
},
我附上example.js文件,其中包括json示例和search.txt文件,以解释我的问题。我希望我的问题现在会更加清楚。
这是我保存两个文件的onedrive的链接。
https://1drv.ms/f/s!AsW4Pb3Y55Qjb34OtQI7qQotLzc

最佳答案

您使用ngram有什么特殊原因吗? Elasticsearch在“查询”以及您索引的文本上使用相同的分析器-除非明确指定search_analyzer,如@Adam在其答案中所述。在您的情况下,将standard tokenizer与小写过滤器一起使用可能就足够了

我使用以下设置和映射创建了索引:

{
"settings": {
"analysis": {
"analyzer": {
"custom_analyzer": {
"type": "custom",
"tokenizer": "standard",
"filter": [
"lowercase"
]
}
}
}
},
"mappings": {
"typehere": {
"properties": {
"name": {
"type": "string",
"analyzer": "custom_analyzer"
},
"description": {
"type": "string",
"analyzer": "custom_analyzer"
}
}
}
}
}

索引两个文件
文件1
PUT /test_index/test_mapping/1
{
"name" : "Sara Connor",
"Description" : "My real name is Sarah Connor."
}

文件2
PUT /test_index/test_mapping/2
{
"name" : "John Connor",
"Description" : "I might save humanity someday."
}

做一个简单的搜索
POST /test_index/_search?query=sara
{
"query" : {
"match" : {
"name" : "SARA"
}
}
}

并且只取回第一个文档。我也尝试过“sara”和“Sara”,结果相同。
{
"took": 12,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.19178301,
"hits": [
{
"_index": "test_index",
"_type": "test_mapping",
"_id": "1",
"_score": 0.19178301,
"_source": {
"name": "Sara Connor",
"Description": "My real name is Sarah Connor."
}
}
]
}
}

关于elasticsearch - 大写或小写不区分大小写的elasticsearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40007971/

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