使用“/”和“ - ”进行不区分大小写的搜索
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用“/”和“ - ”进行不区分大小写的搜索相关的知识,希望对你有一定的参考价值。
这个问题是我的两个问题的组合:
第一个问题的答案允许我用“/”和“ - ”搜索数据。但搜索区分大小写。
在第二个问题中,我有不区分大小写的搜索,但搜索“/”和“ - ”被打破。
我现在拥有的:
{
"settings": {
"analysis": {
"analyzer": {
"folding": {
"tokenizer": "whitespace",
"filter": [ "lowercase", "asciifolding" ]
}
},
"normalizer": {
"lowerasciinormalizer": {
"type": "custom",
"filter": [ "lowercase", "asciifolding" ]
}
}
}
},
"mappings": {
"entity": {
"properties": {
"Description": {
"type": "text",
"analyzer": "whitespace",
"fields": {
"keyword": {
"type": "keyword",
"normalizer": "lowerasciinormalizer"
}
}
},
"Name": {
"type": "text",
"analyzer": "whitespace",
"fields": {
"keyword": {
"type": "keyword",
"normalizer": "lowerasciinormalizer"
}
}
}
}
}
}
}
这个索引允许我做不区分大小写的搜索,但我找不到这样的文件:
PUT
{
"name": "Harry Potter",
"author": "Some 28/56 another"
}
POST
{
"query": {
"query_string": { "default_field": "author", "query": "*28\/56*" }
}
}
是否可以使用不区分大小写的搜索,它将与“/”和“ - ”一起使用?
答案
您已经定义了一个名为folding
的分析器,它可以满足您对不区分大小写搜索的要求,/
和-
不用于标记输入字符串。您应该在映射中添加author
,如下所示:
"author": {
"type": "text",
"analyzer": "folding"
}
然后使用下面的查询进行匹配:
{
"query": {
"query_string": {
"default_field": "author",
"query": "28\/859"
}
}
}
如果您只想使用带有空白标记生成器的小写,则定义另一个分析器,如下所示:
"lowercaseWs": {
"filter": [
"lowercase"
],
"tokenizer": "whitespace"
}
然后使用上面的author
字段如下:
"author": {
"type": "text",
"analyzer": "lowercaseWs"
}
以上是关于使用“/”和“ - ”进行不区分大小写的搜索的主要内容,如果未能解决你的问题,请参考以下文章
使用 Amazon Dynamodb 进行不区分大小写的查询
NSPredicate 使用 CloudKit 进行不区分大小写的字符串搜索
IOS / Objective-C:使用StringByReplacingOccurrencesOfString进行不区分大小写搜索