自定义分析器,它会破坏特殊字符和小写/大写的标记

2024-01-03

我正在尝试编写一个自定义分析器,它会破坏特殊字符上的标记,并在索引之前将其转换为大写,如果我也使用小写字母进行搜索,我应该能够获得结果。

例如,如果我给出 data@source - 它应该用空格替换 @ - 它应该用空格替换任何特殊字符,并给我像数据源一样的结果。

这是我尝试实施的方法。

PUT sound
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "standard",
          "char_filter": [
            "my_char_filter"
          ],
          "filter": [
            "uppercase"
            ]
        }
      },
      "char_filter": {
        "my_char_filter": {
          "type": "pattern_replace",
          "pattern": "(\\d+)-(?=\\d)",
          "replacement": "$1 "
        }
      }
    }
  }
}


POST sound/_analyze
{
  "analyzer": "my_analyzer",
  "text": "data-source&abc"
}

它很好地分割了令牌,比如 -

{
   "tokens": [
      {
         "token": "DATA",
         "start_offset": 0,
         "end_offset": 4,
         "type": "<ALPHANUM>",
         "position": 0
      },
      {
         "token": "SOURCE",
         "start_offset": 5,
         "end_offset": 11,
         "type": "<ALPHANUM>",
         "position": 1
      },
      {
         "token": "ABC",
         "start_offset": 12,
         "end_offset": 15,
         "type": "<ALPHANUM>",
         "position": 2
      }
   ]
} 

但是,如果我在其中使用小写甚至大写进行搜索,则它不起作用......例如:

GET sound/_search?text="data"

GET sound/_search?text="data"

GET /sound/_search
{
  "query": {
    "match": {
      "text": "data"
    }
  }
}

如果我像上面的查询一样搜索,它不会给我结果。


您只需要使用一些稍微不同的语法来进行搜索:

GET sound/_search?q=data

GET sound/_search?q=data

POST sound/_search
{
  "query": {
    "match": {
      "NAME_OF_YOUR_FIELD": "data"
    }
  }
}

NAME_OF_YOUR_FIELD需要是您存储数据的字段的名称。更多信息此处匹配查询 https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html

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

自定义分析器,它会破坏特殊字符和小写/大写的标记 的相关文章

随机推荐

  • C 通用数组实现

    我正在尝试在 C 中实现通用数组列表 但是 当数据类型是 int 以外的任何类型时 列表将不会包含正确的数据 例如 像 123 1234 作为双精度数 当将双精度数传递到列表中时 它将变成 000 0000 一 当数据类型为int时 它将有
  • python中如何输入输入的数字

    我想内联输入 1 input number 5 2 1 5 3 4 2 python中如何接收输入数量的输入 我已经尝试过这样的 num int input inputs num mlist for i in range num n int
  • 如何将 Hive 与 Power BI 连接

    我无法将 Hive 视为 power BI 中列出的数据源 有没有办法将Hive数据库与power bi桌面连接 还有有什么限制吗 应在系统中安装并配置 Hive ODBC 驱动程序 以便与 Power BI 连接 成功配置 ODBC 驱动
  • AngularJS 事件未从 $rootScope 触发

    我遇到了 rootScope broadcast 事件未被触发的问题 App run function rootScope var text Not So Static Now rootScope broadcast event stati
  • 在 Android 中使用经过训练的 Scikit-learn svm 分类器 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在开发一个 Android 应用程序 它使用手机中的传感器数据对活动进行分类 与任何 Java 机器学习库相比 我也更喜欢 sci
  • C#中有“记录”吗?

    我希望将一些客户数据存储在内存中 我认为最好的方法是使用记录数组 我不确定这是否是 C 中的名称 但基本上我可以调用Customer i Name并将客户姓名作为字符串返回 在图灵中 它是这样完成的 type customers recor
  • 将成绩单 .srt 文件解析为可读文本

    我有一个视频脚本 SRT 文件 其中包含传统 SRT 格式的线条 这是一个例子 1 00 00 00 710 gt 00 00 03 220 Lorem ipsum dolor sit amet consectetur adipisicin
  • java.lang.AbstractMethodError:当我尝试使用 nexmo(vonage) API 发起出站语音呼叫时出现此异常

    我的 pom xml 用于所有相关的依赖项 没有其他依赖项在内部使用以下依赖项
  • TypeScript 中除了函数之外还有其他类型吗?

    我想表达的是 参数应该是一个对象或者简单的值类型 数字 布尔值 字符串等 而不是函数 如果我使用Object 编译器让我分配一个函数 var test Object gt a 如果我使用any 当然也是同样的结果 在这种情况下有什么类型或技
  • 从 2 个不同的表以用户或管理员身份登录

    好吧 我想以用户和管理员身份登录 我的用户表称为 sollicitant 我的管理员是 bedrijf 这是荷兰语 哈哈 抱歉 我现在的代码仅适用于 1 个表 但我如何才能有一个在两个表中查找以登录的 sql 查询
  • Stripe 计量计费我应该使用什么?

    我对文档有点困惑 In order for Stripe to compute the number of units consumed during the billing cycle you must report the custom
  • 在神经网络反向传播算法中循环训练数据

    在一个训练周期中我使用训练数据样本多少次 假设我有 60 个训练数据 我遍历第一行并进行前向传递 并使用后向传递的结果调整权重 使用 sigmoidal 函数如下 Forward pass Si sum of Wi Uj Ui f Si 1
  • 如何在 Android 中播放音频文件?

    我有代码可以玩 ogg音频文件 我从互联网上下载的 我没有错误 所以我可以运行它 但应用程序崩溃了 package play my sound import android app Activity import android media
  • Py2App找不到标准模块

    我使用 py2app 创建了一个应用程序 它工作正常 但如果我压缩 解压缩它 新解压缩的版本将无法访问标准 python 模块 如 Traceback 或 os zip 的联机帮助页声称它保留了资源分支 并且我已经看到其他以这种方式打包的应
  • 按钮点击不触发它的方法VB.NET

    您好 我的按钮有问题 当我单击它时 按钮不会触发该方法 Private Sub button1 Click sender As System Object e As System EventArgs Initialize the captu
  • PHP 独特的嵌套数组数组函数

    有没有办法使用 Array unique 函数来处理嵌套数组 如下所示 我想删除日期重复项并将两个日期作为数组取出 Array 0 gt Array value gt 1311044688 name gt 19th Jul 2011 1 g
  • 我可以阻止 std::sort 复制传递的比较对象吗

    我们使用比较器对象对向量进行排序 std vector
  • jQuery:绑定命名空间事件

    如果事件是命名空间 是否可以侦听一个基本事件的所有事件 Example elmt bind change function event console log event elmt trigger change namespace1 elm
  • Opencv:使用 FAST 关键点和 Brief 特征训练 SVM

    我想训练一个用于对象检测的支持向量机 此时 我有一个 python 脚本 可以检测 FAST 关键点并提取该位置的 Brief 特征 现在我不知道如何使用这些描述符来训练 SVM 请你告诉我 如何使用描述符来训练SVM 据我所知这些描述符应
  • 自定义分析器,它会破坏特殊字符和小写/大写的标记

    我正在尝试编写一个自定义分析器 它会破坏特殊字符上的标记 并在索引之前将其转换为大写 如果我也使用小写字母进行搜索 我应该能够获得结果 例如 如果我给出 data source 它应该用空格替换 它应该用空格替换任何特殊字符 并给我像数据源