在这种情况下,我不确定标准标记器(由默认标准分析器使用)为什么会表现如下:
-如果我使用单词system.exe
,它将生成令牌system.exe
。我了解.
不是断词器。
-如果我使用单词system32.exe
,它将生成标记system
和exe
。我不明白,为什么在找到number
+ .
时会打断单词?
-如果我使用单词system32tm.exe
,它将生成令牌system32tm.exe
。与第一个示例一样,它可以按预期工作,不会将单词分解为不同的标记。
我已经读过http://unicode.org/reports/tr29/#Word_Boundaries,但我仍然不明白为什么number
+点(.
)是字边界
Elasticsearch标准标记器行为和单词边界
•
问答
lgq890116 回答:Elasticsearch标准标记器行为和单词边界
如问题中所述,standard
令牌生成器根据Unicode Standard Annex #29中的Unicode文本分段算法提供基于语法的令牌生成。
如果您有letter + dot + letter
,则规则http://unicode.org/reports/tr29/#Word_Boundaries要不要中断,请参见以上规范中的WB6。因此tm.exe
被保留,system32.exe
被拆分。
规范说,除了列出的例外,它总是分裂。例外WB6和WB7表示,它从不按字母,标点和字母分割。规则WB11和WB12表示,它永远不会按数字,标点符号和数字分割。但是,对于数字,然后是标点符号,然后是字母,则没有这样的规则,因此默认规则适用,system32.exe
被拆分。