令牌字符映射到 Ngram 过滤器 ElasticSearch NEST

2023-12-08

我正在尝试使用 NEST 复制以下映射,但在将标记字符映射到标记生成器时遇到问题。

{
   "settings": {
      "analysis": {
         "filter": {
            "nGram_filter": {
               "type": "nGram",
               "min_gram": 2,
               "max_gram": 20,
               "token_chars": [
                  "letter",
                  "digit",
                  "punctuation",
                  "symbol"
               ]
            }
         },
         "analyzer": {
            "nGram_analyzer": {
               "type": "custom",
               "tokenizer": "whitespace",
               "filter": [
                  "lowercase",
                  "asciifolding",
                  "nGram_filter"
               ]
            }
         }
      }
   }

我能够复制除令牌字符部分之外的所有内容。有人可以帮忙这样做吗?下面是我复制上述映射的代码。 (除了token字符部分)

 var nGramFilters1 = new List<string> { "lowercase", "asciifolding", "nGram_filter" };
 var tChars = new List<string> { "letter", "digit", "punctuation", "symbol" };

    var createIndexResponse = client.CreateIndex(defaultIndex, c => c
                 .Settings(st => st
                 .Analysis(an => an
                 .Analyzers(anz => anz
                 .Custom("nGram_analyzer", cc => cc
                 .Tokenizer("whitespace").Filters(nGramFilters1)))
               .TokenFilters(tf=>tf.NGram("nGram_filter",ng=>ng.MinGram(2).MaxGram(20))))));

参考

  1. 那么问题
  2. GitHub 问题

NGram 分词器支持标记字符(token_chars),使用这些来确定哪些字符应保留在标记中,并拆分为列表中未表示的任何字符。

NGram 令牌过滤器另一方面,对标记生成器生成的标记进行操作,因此只有应生成的最小和最大克的选项。

根据您当前的分析链,您可能需要类似以下内容的内容

var createIndexResponse = client.CreateIndex(defaultIndex, c => c
    .Settings(st => st
        .Analysis(an => an
            .Analyzers(anz => anz
                .Custom("ngram_analyzer", cc => cc
                    .Tokenizer("ngram_tokenizer")
                    .Filters(nGramFilters))
                )
            .Tokenizers(tz => tz
                .NGram("ngram_tokenizer", td => td
                    .MinGram(2)
                    .MaxGram(20)
                    .TokenChars(
                        TokenChar.Letter,
                        TokenChar.Digit,
                        TokenChar.Punctuation,
                        TokenChar.Symbol
                    )
                )          
            )
        )
    )
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

令牌字符映射到 Ngram 过滤器 ElasticSearch NEST 的相关文章

随机推荐

  • 在 Python 3.7 上安装 Python.net 时出错

    我试图让 Python net pythonnet 在 Python 3 7 上工作 但在运行 setup py 时失败并出现以下错误 我假设它与路径行中缺少的条目有关 但我无法对它进行任何引用 它基本上是 Windows 7 上 Pyth
  • 如何更改 JavaScript 中的日期格式[重复]

    这个问题在这里已经有答案了 可能的重复 在 JavaScript 中设置日期格式 我有这个 HTML Start Date
  • JPA继承

    您好 我是 JPA 新手 我无法理解它如何处理继承 我有一个需要在不更改数据库方案的情况下解决的特定问题 但如果您找不到解决方案 我将不胜感激使用不同数据库方案的解决方案建议 欢迎 Hibernate TopLink 解决方案 如果我不清楚
  • 如何正确初始化 QWizard 页面?

    我在将数据从 QWizard 页面发送到下一页时遇到问题 我正在使用一个变量my nameQWizard 对象作为容器 我的方法是 每当我更改 QLineEdit 的文本时Page1 变量my name我的 QWizard 对象发生了变化
  • KeyboardEvent 的 Angular 4 单元测试

    我正在尝试为我编写的实用程序编写单元测试 以限制输入字段可用的字符 该方法获取键盘事件并确定已触发哪个 event code 并返回 true 或 event preventDefault 这很有效 但我无法在茉莉花 业力中测试它 来自模板
  • R 将字符串转换为时间

    我想将字符串转换为时间 我有一个时间字段 其中字符串只有四位数字和一个字母 A 或 P 数字之间没有冒号 表明它是时间 我想将 12 小时的字符串转换为 24 小时的时间 这样我就可以删除 A 和 P 这是一个例子 time c 1110A
  • 从 vbs 中具有特定扩展名的文件夹中获取最后修改的文件

    我有以下代码 我需要的只是找到扩展名为 PNG 和最近的最后修改日期的文件 我能够找到最后修改日期 但是如果我在文件上检查扩展名 则会出现 Object 某些数字 行需要 recentFile SCRIPT For Each objFile
  • 我可以在 iframe 上使用 postMessage,谁的 html 通过 - srcdoc 属性传递?

    我无法调用 postMessage 以防我在 srcdoc 属性中传递 html without sandbox allow scripts 它给出以下错误 Failed to execute postMessage on DOMWindo
  • 将字节流转换为数字数据类型

    假设我有一个字节流 其中我知道 64 位值 64 位随机数 的位置 字节顺序为 Little Endian 由于 PHP 的整数数据类型仅限于 32 位 至少在 32 位操作系统上 我如何将字节序列转换为 PHP 数字表示形式 我认为浮点就
  • 对非数字数据使用“bsxfun”

    有没有相当于bsxfun对于非数字数据 例如 我想比较存储在两个元胞数组中的所有字符串对 gt gt a aa bb cc gt gt b dd aa gt gt bsxfun strcmp a b not working for cell
  • Git:推送被拒绝

    我有一个团队 我们正在开发一个项目 我们的一名团队成员在 GitHub 上创建了一个存储库 并将其他人添加为协作者 我的团队成员将我们的代码提交到这个存储库 我对我的部分进行了更改 当我尝试提交它时 出现错误 如何将更改提交到我作为协作者的
  • 在完成块中调用时 UIAlertView 需要很长时间才能出现

    我的应用程序的一部分需要日历访问 这需要调用EKEventStore method void requestAccessToEntityType EKEntityType entityType completion EKEventStore
  • PySide 通过事件切换小部件?

    我想不通 我希望能够根据按钮点击等事件交换 QWidgets 但我遗漏了一些东西 而且我无法按照下面的代码行搜索到任何示例 我想要做的是单击顶部按钮之一并获取下面的小部件以在 QCalendar 或 QtextEdit 之间切换 我哪里出错
  • 从 JMS 侦听器类以编程方式更新某些视图

    我能够将 ActiveMQ 集成并在我的 OpenXava 应用程序中创建 JMS 使用者 现在 我需要使用接收到的数据更新某些瞬态视图 消息 它有几个问题需要考虑 例如 如何从 JMS 侦听器 java 类并将更改推送到当前视图 和 假设
  • 多核CPU单线程行为,未达到100%

    正如您从附图中看到的 我的双核机器上的 CPU 图形奇怪地对称 这是某种负载平衡 以防止一个核心比另一个核心使用更多 其背后的原因是什么 可能是热量分布 当然我主要关心的是 我的单线程 PSNR 图像算法是否达到 100 CPU 为 Cor
  • 为什么所有 openGL 对象都存储在 GLuint 中?

    我最好的猜测是 GLuint 持有一个指针而不是对象 因此它可以 持有 任何对象 因为它实际上只是持有一个指向内存中空间的指针 但如果这是真的 为什么我在使用这些变量时不需要取消引用任何内容 OpenGL对象名字是handles引用 Ope
  • 为每行插入一个数字输入 - R Shiny

    我有一个生成大矩阵的复杂代码 但在这里我附上一个简单的 可重现的示例 以便清楚地解释我想要的内容 这是代码 ui R library shiny shinyUI mainPanel Table Output tableOutput My t
  • 对齐规则

    我在家庭作业问题上遇到了一些麻烦 我想知道是否有人可以为我指出正确的方向 假设我们正在为一台机器编译 1字节字符 2字节 短整型 4 字节整数和 8 字节 实数 并具有对齐规则 需要每个原语的地址 数据元素为偶数倍 元素的大小 进一步假设
  • R 使用链接写入 Excel

    我想知道如何将 r 数据框导出到 excel 格式文件 并嵌入一些链接 这样我就可以使用 R 创建 xlsm 文件 打开 xlsm 文件时 我可以单击某些链接并打开其他文件或网页 我检查了几个 R Write to Excel 包 但几乎找
  • 令牌字符映射到 Ngram 过滤器 ElasticSearch NEST

    我正在尝试使用 NEST 复制以下映射 但在将标记字符映射到标记生成器时遇到问题 settings analysis filter nGram filter type nGram min gram 2 max gram 20 token c