【问题标题】:Elasticsearch standard tokenizer behaviour and word boundariesElasticsearch 标准分词器行为和单词边界
【发布时间】:2019-11-29 08:52:17
【问题描述】:

我不确定为什么标准标记器(由默认标准分析器使用)在这种情况下会表现得像这样:
- 如果我使用单词system.exe,它会生成令牌system.exe。我知道. 不是断字。
- 如果我使用单词system32.exe,它会生成标记systemexe。我不明白这一点,为什么它在找到 number + . 时会破坏这个词?
- 如果我使用单词system32tm.exe,它会生成令牌system32tm.exe。与第一个示例一样,它按预期工作,没有将单词分解为不同的标记。
我已经阅读了http://unicode.org/reports/tr29/#Word_Boundaries,但我仍然不明白为什么 number + dot (.) 是单词边界

【问题讨论】:

    标签: elasticsearch token tokenize analyzer word-boundary


    【解决方案1】:

    如问题中所述,standard 分词器提供基于 Unicode 文本分段算法的基于语法的分词,如 Unicode Standard Annex #29 中所述
    如果你有letter + dot + letter,规则http://unicode.org/reports/tr29/#Word_Boundaries打破,请参阅上述规范中的WB6。所以tm.exe 被保留,system32.exe 被分割。
    规范说它总是分裂,除了列出的例外。例外 WB6WB7 说它永远不会在字母上分开,然后是标点符号,然后是字母。规则 WB11WB12 说它永远不会按数字拆分,然后是标点符号,然后是数字。但是,没有这样的规则,先是数字,然后是标点符号,然后是字母,所以默认规则适用,system32.exe 被拆分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-29
      • 2014-12-11
      • 2021-09-07
      相关资源
      最近更新 更多