zoukankan      html  css  js  c++  java
  • ElasticSearch中分词器组件配置详解

    首先要明确一点,ElasticSearch是基于Lucene的,它的很多基础性组件,都是由Apache Lucene提供的,而es则提供了更高层次的封装以及分布式方面的增强与扩展。 

    所以要想熟练的掌握的关于es中分词方面的知识,一定得先从Lucene抓起,否则只会是丈二和尚摸不着头脑,当然我们大多数开发者只关注于怎么用,偏底层的东东,也没有太多时间去深究,这也有情可原,遇到问题再去探究,也何尝不是一种办法,如果有时间,还是建议看看Lucene基础的知识。 

    在ElasticSearch或Solr中,都提供了基于配置的可插拔式的分词插件,管理方式,这样以来就组合配置方式就非常灵活,在es中,一个analysis集合 
    可以包含多个analyzer,而一个analyzer则由一个单个的tokenizer,零个或多个的tokenfilter组成,而一个tokenizer又可以包含零个或多个的charFilter。总体的执行流程如下图: 





    在es里面的一个模板配置如下: 

    Java代码  收藏代码
    1. index :  
    2.     analysis ://一个analysis可以包含多个analyzer,tokenizer,filter,char_filter配置  
    3.         analyzer :// 一个analyzer下面可以包含一个tokenizer,多个filter和char_filter, position_increment_gap是距离查询时,最大允许查询的距离,默认是100  
    4.           myAnalyzer1 :  
    5.                 type : custom  
    6.                 tokenizer : myTokenizer1  
    7.                 filter : [myTokenFilter1, myTokenFilter2]  
    8.                 char_filter : [my_html]  
    9.                 position_increment_gap: 256  
    10.            myAnalyzer2 :  
    11.                 type : custom  
    12.                 tokenizer : myTokenizer1  
    13.                 filter : [myTokenFilter1, myTokenFilter2]  
    14.                 char_filter : [my_html]  
    15.                 position_increment_gap: 256  
    16.   
    17.         tokenizer :  
    18.             myTokenizer1 :  
    19.                 type : standard  
    20.                 max_token_length : 900  
    21.             myTokenizer2 :  
    22.                 type : keyword  
    23.                 max_token_length : 900  
    24.         filter :  
    25.             myTokenFilter1 :  
    26.                 type : stop  
    27.                 stopwords : [stop1, stop2, stop3, stop4]  
    28.             myTokenFilter2 :  
    29.                 type : length  
    30.                 min : 0  
    31.                 max : 2000  
    32.         char_filter :  
    33.               my_html :  
    34.                 type : html_strip  
    35.                 escaped_tags : [xxx, yyy]  
    36.                 read_ahead : 1024  




    一个比较完整的分词器配置案例,就如上面的例子,几乎涵盖了所有可能用到的组件,而我们在实际应用中,要做的就是,选择组合我们需要的组件,定制成一个分词器,然后就可以使用了, 
    上面的这段配置,我们需要配置在elasticsearch.yml文件中,全局有效,然后我们就可以在静态mapping或动态mapping中引用和使用它了。 
    参考链接: 
    https://www.elastic.co/guide/en/elasticsearch/reference/2.1/analysis-custom-analyzer.html 

  • 相关阅读:
    在 Eclipse Workbench 之外使用 Eclipse GUI
    GB2312,GBK,Unicode
    木偶一之推荐系统
    Matlab:任意矩阵计算分布密度(海明距离的分布密度)
    live555在arm linux下的交叉编译,并下载的Arm板播放H264文件
    java设计模式之原型模式
    HDU 1102
    poj3661另一种做法(滚动数组)
    基于QT的小游戏细菌病毒战
    某代码查看器的保护突破
  • 原文地址:https://www.cnblogs.com/qindongliang/p/4989525.html
Copyright © 2011-2022 走看看