这个问题是我的两个问题的组合:
在第一个问题中,请允许我用"/“和"-”搜索数据。但搜索是区分大小写的。
在第二个问题中,我进行了不区分大小写的搜索,但是搜索"/“和"-”是错误的。
我现在拥有的是:
{
"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*" }
}
}是否有可能使用"/“和"-”来进行不区分大小写的搜索?
发布于 2019-02-05 03:48:50
您已经定义了一个名为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"
}https://stackoverflow.com/questions/54523233
复制相似问题