文章目录
- 分词器和过滤器作用
- 过滤器
- 词干化(stemming)
- 高频词(stop word)
- 小写(lowercase)
分词器和过滤器作用
analyzer由一个分词器(tokenizers)和多个过滤器(tokenfilter)组成,分词器对日志进行分词切分(token),过滤器遍历分词器切分结果中每个分词做处理,比如将字母全部变成小写。
最后生成的分词数组,对数组中每个分词做倒排索引。
举个例子:
日志: “She’s beautiful eyes”
1. 将文本分成单词: “She’s beautiful eyes” => [She’s,beautiful,eyes]
2. 将单词大写部分转小写: “She’s” => “she’s”
3. 将所有格形式去掉:“she’s” => “she”
第1步叫做分词过程,通常英语单词是靠换行和空格分词。
第2步和第3步是过滤器,用于分词结果数组的每个元素做处理。
总结:
- 分词器: 使用分词规则将句子切分成一个个分词(可以叫token,term,word etc…),中文和英文的分词规则不同,使用的分词器也不同,如果不指定字段的analyzer,默认的分析器就会被使用,默认的分词器只能对英文(按空格和换行符)进行分词。
- 过滤器: 对分词进一步处理,如大小写转换,删除等,下面会具体整理下过滤器的大致种类。
过滤器
过滤器分成很多种不同类型,使用过滤器会使搜索更加精准快速。
过滤器的输入是一个分词数组,对数组中的每个分词使用预定义函数进行处理,输出处理后的分词数组,用于索引。
词干化(stemming)
stemming是将一个单词归纳为它的词干。
比如我们在搜索时,想要搜books
(复数形式),那么book's
(所有格形式), booking
(动词形式)都会被搜索出来。是因为在倒排索引中存储的都是词干book
高频词(stop word)
一些高频词,比如英语里的"the",“a”,"is"等,对这种词做索引意义不大,因为所有文档几乎都有,所以过滤器会把这类高频分词从分词数组删除。
小写(lowercase)
搜索Book,那么book也会出来,是因为索引存储全是小写的"book".