Elasticsearch 标准分词器行为和单词边界

标签 elasticsearch token tokenize analyzer word-boundary

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

最佳答案

如问题中所述,standard标记器提供基于 Unicode 文本分割算法的基于语法的标记化,如 Unicode Standard Annex #29 中所述。
规则 http://unicode.org/reports/tr29/#Word_Boundaries不是 如果你有 letter + dot + letter 就休息一下,见 WB6在上述规范中。所以tm.exe被保存和system32.exe被分割。
规范说它总是 split ,除了列出的异常(exception)。异常(exception) WB6WB7说它永远不会在字母上 split ,然后是标点符号,然后是字母。规则 WB11WB12说它永远不会在数字上 split ,然后是标点符号,然后是数字。然而,没有这样的规则,数字,标点,字母,所以默认规则适用,system32.exe split 。

关于Elasticsearch 标准分词器行为和单词边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59101540/

相关文章:

elasticsearch - 如何在不使用Filebeat或Logstash等任何日志传送程序的情况下将日志存储在Elasticsearch中?

caching - ElasticSearch中的Translog:实时CRUD和廉价的fsyncs?

ios - 如何在 Swift 中使用 AgoraRtcEngineKit 创建 channel 和服务器 token ?

python - 如何使用 Requests 模块在 Python 3 中发布此 API 代码?不断收到 405 错误

java - 如何根据光标位置分割线?

python - 标记字符串列表以返回一个标记化单词列表

php - 通过Elasticsearch根据领域获得独特的结果

amazon-web-services - Elasticsearch 1.3.2升级后的问题

django - 使用 token 身份验证时如何在 django channel 中的 websocket 连接中对用户进行身份验证

java - StreamTokenizer 在遇到斜杠时停止