Elasticsearch 分词与神经网络分词的区别
Elasticsearch 的分词过程产生的是优化用于搜索和检索的语言学分词。这与机器学习和自然语言处理中的神经分词不同。神经分词器将字符串转换为更小的子词分词,这些分词被编码为向量,供神经网络使用。Elasticsearch 没有内置的神经分词器。
分词器接收一个字符流,将其分解为单独的分词(通常是单个单词),并输出一个分词流。例如,`whitespace`分词器在遇到任何空白字符时将文本分解为分词。它会将文本`"Quick brown fox!"`转换为术语`[Quick, brown, fox!]`。
分词器还负责记录以下内容:
• 每个术语的顺序或位置(用于短语和词近似查询)。
• 每个术语所代表的原始单词的开始和结束字符偏移量(用于突出显示搜索片段)。
• 分词类型,是对每个产生的术语的分类,例如`<ALPHANUM>`、`<HANGUL>`或`<NUM>`。更简单的分析器仅产生`word`分词类型。
Elasticsearch 提供了许多内置的分词器,可以用来构建自定义分析器。
以单词为导向的分词器
以下分词器通常用于将全文分解为单个单词:
标准分词器
`standard`分词器根据 Unicode 文本分段算法定义的单词边界将文本划分为术语。它会移除大部分标点符号。对于大多数语言来说,这是最佳选择。
字母分词器
`letter`分词器在遇到非字母字符时将文本划分为术语。
小写分词器
`lowercase`分词器与&#