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

2024-03-25

我正在使用弹性搜索,但遇到了问题。如果有人给我提示,我将非常感激。

我想分析由不同条目组成的字段“名称”或“描述”。例如,有人想搜索萨拉。如果他进入 SARA、SAra 或 sara。他应该能够得到萨拉。 弹性搜索使用分析器将所有内容变为小写。

我想实现它不区分大小写,无论用户输入大写或小写名称,他/她都应该得到结果。 我使用 ngram 过滤器来搜索名称和小写字母,这使得它不区分大小写。但我想确保一个人即使输入大写或小写也能得到结果。

在弹性搜索中有什么办法可以做到这一点吗?

{"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 https://1drv.ms/f/s!AsW4Pb3Y55Qjb34OtQI7qQotLzc


您使用 ngram 有什么具体原因吗? Elasticsearch 在“查询”以及您索引的文本上使用相同的分析器 - 除非明确指定 search_analyzer,正如 @Adam 在他的回答中提到的。在你的情况下,使用可能就足够了标准分词器 https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-standard-tokenizer.html带小写过滤器

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

{
   "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."
    }

Doc 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."
        }
      }
    ]
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不区分大小写的elasticsearch 大写或小写 的相关文章

随机推荐

  • 我的自定义开放图对象的自定义属性未显示在共享对话框中

    我无法获取 Android 应用程序的共享对话框中显示的自定义开放图对象的自定义属性 我创建了一个自定义对象channel在命名空间中myradio android 并定义了一个自定义属性当前歌曲标题在频道中 我还创建了一个自定义操作enj
  • 将 Marketo 表单添加到 Gatsby/JSX

    我正在尝试将 Marketo 表单添加到 Gatsby 站点中 但在将脚本注入页面的顺序方面遇到问题 当我尝试渲染下面的组件时 收到错误消息 ReferenceError MktoForms2 未定义 我尝试注释掉整个 useEffect
  • 如何在 UIMarkupTextPrintFormatter 中添加图像?

    我正在尝试使用直接 HTML 打印文件 但是 在将图像添加到打印文件中时遇到困难 如何在我要打印的 HTML 中引用项目中的图像 UIMarkupTextPrintFormatter 支持标签吗 实际上比我想象的要简单得多 NSString
  • 向 Firefox 扩展添加屏幕截图功能

    是否有跨平台方法从 Firefox 扩展中获取屏幕截图 理想情况下 我希望能够截取 dom 元素的屏幕截图 无论它在页面上是否可见 例如 var 屏幕截图 屏幕截图 document getElementById example 任何指示或
  • 在python中打印下标

    在Python 3 3中 有什么方法可以在打印时使字符串中的部分文本成为下标吗 例如H2 H 然后是下标 2 如果您只关心数字 则可以使用str maketrans https docs python org 3 library stdty
  • JSF 2 复选框和布尔值获取器

    我正在生成一个基于 web 服务的 jaxws 客户端 Jaxb 将使用 java lang Boolean 而不是原始类型生成布尔值 除此之外 它还会生成 bean 的 is 命名约定 但是 如果我尝试将布尔值 例如 isOptional
  • Axios“无法在模块外部使用 import 语句”

    我有一个 Vue js 应用程序 其中两个文件包含 import axios from axios 这些文件位于应用程序内的 src lib 中 并在第一行包含 import 语句 无论 package json 说什么 在 Github
  • Vuex - 多次调度后运行函数

    我正在创建一个应用程序 在某个时刻我需要加载一些数据 但为了让用户看不到损坏的数据 我插入了一个加载组件 目前 我在负载中放置了 setTimeout 但在某些时候 API 响应可能需要超过 1 秒 所以我想仅在所有调度完成时更新加载状态
  • Ninject 教程/文档?

    根据官方网站 http ninject org learn 了解 Ninject 的最佳地点是官方维基 http wiki github com ninject ninject在 Github 上 真的吗 作为一个初学者 我发现官方维基 h
  • 使用什么命令代替 urllib.request.urlretrieve?

    我目前正在编写一个从 URL 下载文件的脚本 import urllib request urllib request urlretrieve my url my filename 文档urllib request urlretrieve
  • 如何让Java.awt.Robot输入unicode字符? (是否可以?)

    我们有一个用户提供的字符串 其中可能包含 unicode 字符 并且我们希望机器人键入该字符串 如何将字符串转换为机器人将使用的键码 你如何做到这一点 使它也独立于java版本 1 3 gt 1 6 我们对 ascii 字符所做的工作是 c
  • gRPC / Protobuf 接口版本控制

    假设我们使用 gRCP Protobuf 来连接许多应用程序 这些应用程序是由他们自己的团队以自己的速度开发和发布的 随着时间的推移 同一应用程序将出现不同版本 例如 安装在用户 PC 上的桌面应用程序 它们在定义的界面上使用不同的版本 虽
  • WordPress 搜索栏仅输出帖子标题

    我想用 PHP 创建一个 Wordpress 搜索栏 仅显示在我网站的一页中 我正在开发一个我制作的新主题 因此 搜索栏应该只输出与搜索关键字相关的我的帖子的永久链接 标题 我现在遇到的问题是搜索输出显示 lorem ipsum 文本和侧边
  • 存储 ASP.NET 会话变量的最佳解决方案是什么?状态服务器还是SQL服务器?

    状态服务器还是SQL服务器 存储 ASP NET 会话变量的最佳解决方案是什么 各自的优点和缺点是什么 在任何特定情况下 一个比另一个更好吗 以下是一些关于优点 缺点的想法 我还添加了 Microsoft Velocity 分布式缓存解决方
  • SQL 日期间隙

    我试图根据状态代码查找表中的间隙 表如下所示 状态表 StateID PK Code 1 AK 2 AL 3 AR 状态模型表 StateModelID StateID EfftiveDate ExpirationDate 1 1 2012
  • 尽管已对其进行了压缩,但仍然出现错误 FAILED BINDER TRANSACTION

    我想从以下位置返回图像添加更多索赔 to 添加索赔 listView 当我点击提交时button in 添加更多索赔 我收到消息E JavaBinder FAILED BINDER TRANSACTION 我用这个method https
  • 缩放图像直到 X 或 Y 与容器相同,然后裁剪其余部分

    我正在多个位置加载图像 网站主题将以不同的尺寸显示它们 我尝试了 CSS 属性 发现我可以使用高度和宽度参数缩放图像 并使用位置 相对和溢出 隐藏来裁剪图像 但我想做的是两者的结合 缩小图像 直到宽度等于容器元素的宽度或高度等于容器元素的高
  • 对一组闪烁的可组合项进行动画处理,控制同步/计时

    我希望两个可组合项同时开始并播放动画 例如 这是我的设置 LazyColumn semantics mergeDescendants true contentDescription contentDes item ShimmeringCom
  • 设置本地报表的数据源 - .NET 和报表查看器

    我创建了一个自定义控件 带有报告查看器的窗口窗体 我有以下代码来加载本地报告 包含在 CustomReportViewer 类中 Load local report this reportViewer1 ProcessingMode Pro
  • 不区分大小写的elasticsearch 大写或小写

    我正在使用弹性搜索 但遇到了问题 如果有人给我提示 我将非常感激 我想分析由不同条目组成的字段 名称 或 描述 例如 有人想搜索萨拉 如果他进入 SARA SAra 或 sara 他应该能够得到萨拉 弹性搜索使用分析器将所有内容变为小写 我