首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有"/“和"-”的不区分大小写的搜索

问带有"/“和"-”的不区分大小写的搜索
EN

Stack Overflow用户
提问于 2019-02-04 19:41:16
回答 1查看 40关注 0票数 0

这个问题是我的两个问题的组合:

在第一个问题中,请允许我用"/“和"-”搜索数据。但搜索是区分大小写的。

在第二个问题中,我进行了不区分大小写的搜索,但是搜索"/“和"-”是错误的。

我现在拥有的是:

代码语言:javascript
复制
{  
    "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"      
                                }
                            }
            }
            }
     }
    }
}

这个索引允许我进行不区分大小写的搜索,但是我找不到这样的文档:

代码语言:javascript
复制
PUT
{
  "name": "Harry Potter",
  "author": "Some 28/56 another"
}

POST
{
    "query": {
        "query_string": { "default_field": "author", "query": "*28\\/56*" }
    }
}

是否有可能使用"/“和"-”来进行不区分大小写的搜索?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-05 03:48:50

您已经定义了一个名为folding的分析器,它可以满足不区分大小写的搜索需求,而不使用/和-来标记输入字符串。您应该在映射中添加author,如下所示:

代码语言:javascript
复制
"author": {
  "type": "text",
  "analyzer": "folding"
}

然后使用下面的查询进行匹配:

代码语言:javascript
复制
{
  "query": {
    "query_string": {
      "default_field": "author",
      "query": "28\\/859"
    }
  }
}

如果您只想要小写和空格标记器,那么定义另一个分析器如下:

代码语言:javascript
复制
"lowercaseWs": {
  "filter": [
    "lowercase"
  ],
  "tokenizer": "whitespace"
}

然后使用上面的author字段,如下所示:

代码语言:javascript
复制
"author": {
  "type": "text",
  "analyzer": "lowercaseWs"
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54523233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档