analyzer
- 记录术语的顺序和相关位置信息(短语查询和单词邻近查询)
- 记录每个术语相对于原始文本的开始和结束位置的偏移量(用于高亮)
- 可以自定义analyzer,可以通过添加配置信息使得某个analyzer成为自己需要的分词器
https://www.elastic.co/guide/en/elasticsearch/reference/6.3/_testing_analyzers.html
https://www.elastic.co/guide/en/elasticsearch/reference/6.3/configuring-analyzers.html
elasticsearch 自带的内置分析仪:
- standard Analyzer:删除标点符号,lowercase,stop words,将汉语转换为一个一个的词
- simple analyze,遇到不是字母的字符就转为术语
- whitespace analyze,不支持lowercase,遇到空格转为术语
- stop analyzer,类似于simple analyzer,支持去除停用词
- keyword analyzer,输出与原始文本中单个术语完全相同的文本
- pattern analyzer,使用正则表达式将文本拆分为术语,支持lowercase and stop words
- language analyzer,支持特定语言
https://www.elastic.co/guide/en/elasticsearch/reference/6.3/analysis-lang-analyzer.html
- Fingerprint Analyzer:重复检测
- custom analyzer:自定义
character filters
- HTMLStripCharFilter
tokenizers
- 记录每个术语的顺序或者相对位置信息,开始和结束位置的偏移量
- standard Tokenizer - letter Tokenizer: 遇到不是字母的字符,就会将文本转化为术语
- lowercase Tokenizer
- Whitespace Tokenizer
- UAX URL Email Tokenizer:识别URL 和email address
- classic Tokenizer:基于语法的英语语言标记器,对缩略词,公司名称,电子邮件地址和Internet主机名称特殊处理
- N-Gram Tokenizer: 可以作为一个匹配词的滑动窗口,通过设置min_gram,max_gram,token_chars(应该包含的字符类)
- Eage NGram Tokenizer 自动按照任何顺序出现的单词时比较有用,对于电影或者歌曲的title使用completion suggester效果更好
- Keyword Tokenizer
- Pattern Tokenizer 使用Java Regular Expressions,默认\w+
- Simple Pattern Tokenizer比Pattern Tokenizer 快
- Simple Pattern Split Tokenizer
- Path Tokenizer:
/foo/bar/baz → [/foo, /foo/bar, /foo/bar/baz ]
token filters
接收来自Tokenizer的数据流,大小写转换,去除停用词,添加同义词等
- Flatten Graph Token Filter :待进一步开发的filter,目前可以用在索引阶段
- Length Token Filter:去除过长或者过短的words
- Lowercase Token Filter
- Uppercase Token Filter:大写规范
- NGram Token Filter:min_gram,max_gram
- Edge NGram Token Filter:min_gram,max_gram,side(front or back,默认front)
- Porter Stem Token Filter:输入必须是小写、
- Shingle Token Filter:max_shingle_size(默认2),min_shingle_size(默认2),token_separator(默认“ ”),filler_token,output_unigrams,output_unigrams_if_no_shingles
- Stop Token Filter:stopwords(list列出来的stopwords,默认为_english_),stopwords_path(指向停用词的文件,UTF-8编码,每个词占一行),remove_trailing(默认true,设置为false时对补全建议很有用,例如green a 匹配green apple)
- Word Delimiter Token
- generate_word_parts :true ->“PowerShot” ⇒ “Power” “Shot”. 默认true
- generate_number_parts:true-> “500-42” ⇒ “500” “42”。默认true
- catenate_words:true -> “wi-fi” ⇒ “wifi”。默认false
- catenate_numbers:true -> “wi-fi-4000” ⇒ “wifi4000”。默认false
- split_on_case_change
- preserve_original
- split_on_numerics
- stem_english_possessive
- Word Delimiter Graph
- Stemmer Token Filter
- Stemmer Override Token Filter:rules,rules_path
- Keyword Marker Token Filter
- Synonym Token Filter:处理同义词
- Synonym Graph Token Filter: 处理同义词
- Compound Word Token Filters:目录分解dictionary_decompounder
- Reverse Token Filter
- Truncate Token Filter:按照一定长度截断token