`

solr 中文分词filedType定义

    博客分类:
  • solr
 
阅读更多

一.   solr.TextField 允许用户通过  分析器 来定制  索引和查询  的 fieldType

分析器包括 一个分词器(tokenizer)和多个过滤器(filter)。

代码展示:

 

<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class = "org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="false" /> 
        <filter class="solr.StopFilterFactory"
                ignoreCase="true"
                words="stopwords.txt"
                enablePositionIncrements="true"
                />
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class = "org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="true" />
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.StopFilterFactory"
                ignoreCase="true"
                words="stopwords.txt"
                enablePositionIncrements="true"
                />
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/>
      </analyzer>
    </fieldType>
 

二.   Solr建立索引 和 对关键词进行查询 都得对字串进行分词。

在向索引库中添加全文检索类型的索引的时候,Solr会首先用空格进行分词,然后把分词结果依次使用指定的过滤器进行过滤,最后剩下的结果才会加入到索引库中以备查询。

分词的顺序如下:

 

索引

1:空格whitespaceTokenize

2:过滤词StopFilter

3:拆字WordDelimiterFilter

4:小写过滤LowerCaseFilter

5:英文相近词EnglishPorterFilter

6:去除重复词RemoveDuplicatesTokenFilter

查询

1:查询相近词

2:过滤词

3:拆字

4:小写过滤

5:英文相近词

6:去除重复词

以上是针对英文,中文的除了空格,其他都类似。但具体是什么样子,需要看对应的 fieldType中的配置。

 

如 1.  中的配置

索引:

1.    IK分词

2.    停用词过滤

3.    拆字

4.    小写过滤

5.    关于不同语言的词干处理

 

查询:

1.    IK分词

2.    同义词

3.    停用词

4.    拆字

5.    小写过滤

6.     关于不同语言的词干处理

 

 

三.   常用分词器与过滤器介绍

      分词器:

      1.   < tokenizer class =" solr.WhitespaceTokenizerFactory " />

            空格分词器

      2.   <tokenizer class = "org.wltea.analyzer.solr.IKTokenizerFactory" isMaxWordLength="false" />

            IK分词器

 

      过滤器

      1.    <filter class ="solr.WordDelimiterFilterFactory" generateWordParts ="1" generateNumberParts ="1" catenateWords ="1" catenateNumbers ="1" catenateAll="0" splitOnCaseChange="1" />

在分词和匹配时,考虑"-"连字符,字母数字的界限,非字母数字字符,这样 "wifi"或"wi fi"都能匹配"Wi-Fi"。

 

      2.   <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true" />

      同义词,同义词的构建一定要参考 http://ip:8983/solr/admin/analysis.jsp 页面的分词效果。

 

     3.    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />

      在禁用字(stopword)删除后,在短语间增加间隔

      stopword:即在建立索引过程中(建立索引和搜索)被忽略的词,比如is this等常用词。

      在conf/stopwords.txt维护。

 

     4.  其它 参见  http://damoqingquan.iteye.com/blog/231293

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics