英语单词相对而言比较容易辨认:单词之间都是以空格或者(一些)标点隔开。 然而即使在英语词汇中也会有一些争议: you’re 是一个单词还是两个? o’clock , cooperate , half-baked ,或者 eyewitness 这些呢?
德语或者荷兰语把独立的单词合并起来创造一个长的合成词如 Weißkopfseeadler (white-headed sea eagle) ,
但是为了在查询 Adler
(eagle)的时候返回查询 Weißkopfseeadler
的结果,我们需要懂得怎么将合并词拆成词组。
亚洲的语言更复杂:很多语言在单词,句子,甚至段落之间没有空格。 有些词可以用一个字来表达,但是同样的字在另一个字旁边的时候就是不同意思的长词的一部分。
显而易见的是没有能够奇迹般处理所有人类语言的万能分析器,Elasticsearch 为很多语言提供了专用的分析器, 其他特殊语言的分析器以插件的形式提供。
然而并不是所有语言都有专用分析器,而且有时候你甚至无法确定处理的是什么语言。这种情况,我们需要一些忽略语言也能合理工作的标准工具包。