elasticsearch analyzers

基本概念

全文搜索引擎会用某种算法对要建索引的文档进行分析, 从文档中提取出若干Token(词元), 这些算法称为Tokenizer(分词器), 这些Token会被进一步处理, 比如转成小写等, 这些处理算法被称为Token Filter(词元处理器), 被处理后的结果被称为Term(词), 文档中包含了几个这样的Term被称为Frequency(词频)。 引擎会建立Term和原文档的Inverted Index(倒排索引), 这样就能根据Term很快到找到源文档了。 文本被Tokenizer处理前可能要做一些预处理, 比如去掉里面的HTML标记, 这些处理的算法被称为Character Filter(字符过滤器), 这整个的分析算法被称为Analyzer(分析器)。

ES内置了很多Analyzer, 还有很多第三方的Analyzer插件, 比如一些处理中文的Analyzer(中文分词)。

analyzer、 tokenizer、 filter可以在elasticsearch.yml 配置, 下面是配置例子

 
 
  1. index :
  2. analysis :
  3. analyzer :
  4. standard :
  5. type : standard
  6. stopwords : [stop1, stop2]
  7. myAnalyzer1 :
  8. type : standard
  9. stopwords : [stop1, stop2, stop3]
  10. max_token_length : 500
  11. # configure a custom analyzer which is
  12. # exactly like the default standard analyzer
  13. myAnalyzer2 :
  14. tokenizer : standard
  15. filter : [standard, lowercase, stop]
  16. tokenizer :
  17. myTokenizer1 :
  18. type : standard
  19. max_token_length : 900
  20. myTokenizer2 :
  21. type : keyword
  22. buffer_size : 512
  23. filter :
  24. myTokenFilter1 :
  25. type : stop
  26. stopwords : [stop1, stop2, stop3, stop4]
  27. myTokenFilter2 :
  28. type : length
  29. min : 0
  30. max : 2000

analyzer

ES内置若干analyzer, 另外还可以用内置的character filter, tokenizer, token filter组装一个analyzer(custom analyzer), 比如

 
 
  1. index :
  2. analysis :
  3. analyzer :
  4. myAnalyzer :
  5. tokenizer : standard
  6. filter : [standard, lowercase, stop]

如果你要使用第三方的analyzer插件,需要先在配置文件elasticsearch.yml中注册, 下面是配置IkAnalyzer的例子

 
 
  1. index:
  2. analysis:
  3. analyzer:
  4. ik:
  5. alias: [ik_analyzer]
  6. type: org.elasticsearch.index.analysis.IkAnalyzerProvider

当一个analyzer在配置文件中被注册到一个名字(logical name)下后,在mapping定义或者一些API里就可以用这个名字来引用该analyzer了,比如

 
 
  1. "message": {
  2. "type": "string",
  3. "indexAnalyzer": "ik",
  4. "searchAnalyzer": "ik"
  5. }

如果没有指定索引和搜索用的analyzer,ES会用默认的analyzer来处理,也就是名字(logical name)为default, default_index, default_search的analyzer。 从名字可以看出来,default是索引和搜索时用的默认的analyzer,default_index是索引时用的默认的analyzer, default_search是查询时用的默认analyzer。

下面是在elasticsearch.yml中配置默认analyzer的例子

 
 
  1. index:
  2. analysis:
  3. analyzer:
  4. default_index:
  5. tokenizer: standard
  6. filter: [standard, lowercase, my_synonym, my_snow]
  7. default_search:
  8. tokenizer: standard
  9. filter: [standard, lowercase, stop]

或者用这种格式

 
 
  1. index.analysis.analyzer.default.type : "mmseg"

一个analyzer可以起若干别名,比如在下面的例子中,standard analyzer可以用alias1或者alias2来引用

 
 
  1. index :
  2. analysis :
  3. analyzer :
  4. standard :
  5. alias: [alias1, alias2]
  6. type : standard
  7. stopwords : [test1, test2, test3]

下面是内置的一些analyzer。

analyzerlogical namedescription
standard analyzerstandardstandard tokenizer, standard filter, lower case filter, stop filter
simple analyzersimplelower case tokenizer
stop analyzerstoplower case tokenizer, stop filter
keyword analyzerkeyword不分词,内容整体作为一个token(not_analyzed)
pattern analyzerwhitespace正则表达式分词,默认匹配\W+
language analyzerslang各种语言
snowball analyzersnowballstandard tokenizer, standard filter, lower case filter, stop filter, snowball filter
custom analyzercustom一个Tokenizer, 零个或多个Token Filter, 零个或多个Char Filter

tokenizer

ES内置的tokenizer列表。

tokenizerlogical namedescription
standard tokenizerstandard 
edge ngram tokenizeredgeNGram 
keyword tokenizerkeyword不分词
letter analyzerletter按单词分
lowercase analyzerlowercaseletter tokenizer, lower case filter
ngram analyzersnGram 
whitespace analyzerwhitespace以空格为分隔符拆分
pattern analyzerpattern定义分隔符的正则表达式
uax email url analyzeruax_url_email不拆分url和email
path hierarchy analyzerpath_hierarchy处理类似/path/to/somthing样式的字符串

token filter

ES内置的token filter列表。

token filterlogical namedescription
standard filterstandard 
ascii folding filterasciifolding 
length filterlength去掉太长或者太短的
lowercase filterlowercase转成小写
ngram filternGram 
edge ngram filteredgeNGram 
porter stem filterporterStem波特词干算法
shingle filtershingle定义分隔符的正则表达式
stop filterstop移除 stop words
word delimiter filterword_delimiter将一个单词再拆成子分词
stemmer token filterstemmer 
stemmer override filterstemmer_override 
keyword marker filterkeyword_marker 
keyword repeat filterkeyword_repeat 
kstem filterkstem 
snowball filtersnowball 
phonetic filterphonetic插件
synonym filtersynonyms处理同义词
compound word filterdictionary_decompounder, hyphenation_decompounder分解复合词
reverse filterreverse反转字符串
elision filterelision去掉缩略语
truncate filtertruncate截断字符串
unique filterunique 
pattern capture filterpattern_capture 
pattern replace filtepattern_replace用正则表达式替换
trim filtertrim去掉空格
limit token count filterlimit限制token数量
hunspell filterhunspell拼写检查
common grams filtercommon_grams 
normalization filterarabic_normalization, persian_normalization 

character filter

ES内置的character filter列表

character filterlogical namedescription
mapping char filtermapping根据配置的映射关系替换字符
html strip char filterhtml_strip去掉HTML元素
pattern replace char filterpattern_replace用正则表达式处理字符串

icu plugin

icu analysis 插件

AliExpress产品研究工具已针对直接发货进行了优化 直接在AliExpress网站上获得对ANY AliExpress产品的深度直销分析的独家访问权。 一次单击即可查看数千种最赚钱的直销产品清单。 发现比赛的估计利润和收入,销售多少单位,在哪里销售以及更多...根据产品的获利能力,托运人的数量,产品的年限,“后起之秀”,畅销国家/地区对产品进行排序……或仅使用“下降得分”功能,将所有这些数据结合起来,向您展示该产品在下降运输方面的表现如何。 借助Ali Insider,您可以轻松验证您的店铺创意,因为它还显示了您的获利能力以及所选类别或搜索字词每天的直销单位总数。 主要特点:★竞争猎人深入了解产品竞争水平。 找出哪些商品由其他卖家送达,在哪个国家/地区,每个卖家每天售出多少个产品以及它们的估计利润和收入是多少。 ★前3万种产品清单查看当前销售最快的30.000种产品的清单。 无需用尽所有在速卖通上单击每个产品的麻烦,我们将它们全部集中在一个地方。 真正的强大功能是,您可以按照所有指定的条件(例如估计的利润,销售国家/地区,托运人的数量等等)来过滤此列表。★托运分数节省时间,并立即找出产品在托运中的表现如何。 寻找优质产品的最重要指标。 复杂的算法结合了产品的竞争水平,产品的年限,每天从托运中获利,DS国家/地区最畅销的销售以及每个托运人的个人成功率,以计算出该产品在托运中的表现如何。 ★NICHE ANALYZER发现最有利可图的类别及其最优质的产品:只需单击“ Dropshipping”,选择一个类别(或在您的搜索词中键入),然后找出在该细分市场中销售最快的产品,就该类别而言,总的直销日销售量,估算的每日总利润和竞争水平。 几乎是不可能的事,但还有更多…★上升之星追踪那些开始快速销售并有可能赚取“大钱”的新产品。 如果您想赶超其他趋势,这就是您需要的过滤器。 结合DROPSHIPPING SCORE功能,您将立即获得许多潜在的获胜产品。 ★SMART GRAPHS跟随销售额的增减。 两个单独的图。 一个显示每天的订单总数,另一个显示每个直销商的每日销售数量。 有关更多功能,请访问:https://aliinsider.com/ali-insider-features/ ------------------------------ ----------------------如果您需要有关安装,激活或使用的任何说明,请访问:https://aliinsider.com/instructions/- - - - - - - - - - - - - - - - - - - - - - - - - - 目前,我们提供7天的免费试用版和Pro版本(按月订阅)。 免费版本限制:https://aliinsider.com/ali-insider-features/专业版定价:https://aliinsider.com/pricing/ ------------------ ----------------------------------使用此扩展程序,即表示您同意https上的Ali Insider条款和条件 ://aliinsider.com/terms/ 支持语言:English
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值