当前位置: 首页 > 面试题库 >

不区分大小写不起作用

公冶泰
2023-03-14
问题内容

我无法弄清楚为什么我的搜索区分大小写。我读过的所有内容都说ES默认情况下不敏感。我有一些映射,它们指定用于索引和搜索的标准分析器,但似乎有些东西还是区分大小写的,即通配符:

"query": {
"bool": {
  "must": [
    {
      "wildcard": {
        "name": {
          "value": "Rae*"
        }
      }
    }
  ]
}

这失败了,但是“ rae *”可以按需工作。我需要使用通配符来进行“开始于”类型的搜索(我想)。

我正在从.Net应用程序中使用NEST,并在创建索引时指定分析器,因此:

  var settings = new IndexSettings();
  settings.NumberOfReplicas = _configuration.Replicas;
  settings.NumberOfShards = _configuration.Shards;
  settings.Add("index.refresh_interval", "10s");
  settings.Analysis.Analyzers.Add(new KeyValuePair<string, AnalyzerBase>("keyword", new KeywordAnalyzer()));
  settings.Analysis.Analyzers.Add(new KeyValuePair<string, AnalyzerBase>("simple", new SimpleAnalyzer()));

在这种情况下,它使用的是简单分析仪,但标准分析仪的结果相同。

映射如下所示:

name: {
    type: string
    analyzer: simple
    store: yes
}

任何人都知道这是怎么回事?

谢谢


问题答案:

从文档中,

“ [[通配符查询]匹配具有与通配符表达式匹配 (未分析)的 字段的文档”。

由于未对 搜索词进行分析 ,因此您实质上需要在生成搜索查询之前 自行
运行分析。在这种情况下,这仅意味着您的搜索词需要小写。或者,您可以使用query_string

{
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "name:Rae*"
          }
        }
      ]
    }
  }
}


 类似资料:
  • 问题内容: 我正在尝试使用以下程序使用正则表达式删除字符串中的某些单词。它可以正确删除,但只考虑大小写。如何使其不区分大小写。我坚持使用方法,但是没有用。 输出: 问题答案: 您需要将模式中要区分大小写的部分放在 前面 : 看见 我已将要删除的关键字周围的空格替换为单词边界()。之所以出现问题,是因为可能有两个关键字一个接一个地被一个空格隔开。 如果仅当关键字被 空格 包围时才想删除它们,则可以使

  • 问题内容: 我想按不区分名称的名称搜索用户表中的数据。 我收到一个错误: 意外令牌:% 。我应该在哪里放置“%”? 问题答案: 您可以使用concat运算符: 或使用命名参数: (使用Spring Boot 1.4.3测试)

  • 问题内容: 我有一个充满小写和大写数据的json。例如 : 而且我有类似的东西: 我想做的是搜索朋友,而不用看大写和小写。因此,基本上,当我在输入中键入“ John”,“ JOHN”或简单地输入“ john”时,它应该返回我的朋友John。 那么是否可以将不区分大小写的选项应用于过滤器? 问题答案: 将您在使用字符串的toLowerCase的适用范围内定义的函数名称传递给您。参见ngFilter。

  • 本文向大家介绍Fortran 不区分大小写,包括了Fortran 不区分大小写的使用技巧和注意事项,需要的朋友参考一下 示例 在Fortran字符集中,字母的大写和小写字母是等效的。换句话说,Fortran不区分大小写。此行为与区分大小写的语言(例如C ++和许多其他语言)形成对比。 结果,变量a和A是相同的变量。原则上可以编写如下程序 对于优秀的程序员来说,要避免这种丑陋的选择。

  • 对于报告(0.1%的所有查询),我需要返回一个所有可能类别的列表,区分大小写! 考虑以下文件: 运行以下查询: 返回: 是否有方法返回区分大小写的类别(存储在文档中)?我对此查询结果中的感兴趣。 Elasticsearch论坛中的问题 谢谢,伊泰