zoukankan      html  css  js  c++  java
  • 中文分词

    1、 名词说明
    中文分词要处理的数据为文本数据:solr.TextField,需在schema.xml文件中做相关配置,配置选项如下:

    • analyzer:告诉solr在建立索引和搜索的时候,如何处理text类型的内容。它在schema.xml文件中配置,可以直接指定一个类给它,也可以由tokenizer和filter的组合来实现。
    • type:可选参数,index或者query,标明此配置是建立索引还是查询。若没有此参数,表示两种都适用。
    • tokenizer:分词器,接收text(通过重solr那里获取一个reader来读取文本),拆分成token stream
    • filter过滤器,接收token stream,对每个token进行处理(比如:替换、丢弃),输出token stream。因此在配置文档中,Tokenizer放在第一位,Filter放在第二位直至最后一位。

    2、分词工作流程简述
    analyzer负责把文本field转化为token流,然后自己处理,或者调用tokenzier和filter进一步处理。Tokenzier和filter是同等级和顺序执行的关系,一个处理完后交给下一个处理。对于filter而言,一般通用的处理放在前面,特殊的处理靠后。

    3、Smartcn分词器配置
    在managed-schema文档中已经定义了一些分词规则。中文分词在solr中是没有默认开启的,需要另外配置一个中文分词。目前可用的分词器有smartcn,IK,Jeasy,庖丁。
    Solr官方提供了简体中文分词Smartcn,以此为例,步骤如下:
    1、 将solr-6.1.0contribanalysis-extraslucene-libslucene-analyzers-smartcn-6.1.0.jar拷贝到Tomcat安装目录 webappssolrWEB-INFlib目录下。
    2、 配置managed-schema文档
         配置如下:     

    <fieldType name="text_smartcn" class="solr.TextField" positionIncrementGap="0">
    <analyzer type="index">
    <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
    <!--filter内容可以根据需求配置-->
    <filter class="solr.PorterStemFilterFactory" />
    </analyzer>
    
    <analyzer type="query">
    <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
    <filter class="solr.PorterStemFilterFactory" />
    </analyzer>
    </fieldType>
    
    <!--6.1版本不支持SmartChineseSentenceTokenizerFactory类,以前版本可能支持,须看具体情况
    
    <fieldType name="text_smartcn" class="solr.TextField" positionIncrementGap="100">
    <analyzer type="index">
    <tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/>
    <filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory" />
    </analyzer>
    <analyzer type="query">
    <tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/>
    <filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory" />
    </analyzer>
    </fieldType>
    -->

    重启服务,效果如下。

       

    4、IK分词器配置

    1、IK Analyzer版本:IKAnalyzer 2012FF_hf1

             下载地址:https://code.google.com/p/ik-analyzer/downloads/list,
             解压IK Analyzer 2012FF_hf1.zip,将解压后文件夹中的IKAnalyzer2012FF_u1.jar拷贝到Tomcat安装目录 webappssolrWEB-INFlib目录              下。
    2、配置managed-schema文档

         配置如下:     

    <fieldType name="text_ik" class="solr.TextField">
    <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer" />
    </fieldType>

     重启服务,配置成功。

    说明:
    不能将positionIncrementGap="100"放入到<fieldType>字段类型中去,因为IKAnalyzer不支持positionIncrementGap的属性注入;若添加则启动tomcat时会出现org.apache.solr.common.SolrException: Plugin Initializing failurefor [schema.xml] fieldType错误提示

  • 相关阅读:
    pyecharts 0.5.11介绍
    Python并发写入一个文件
    subprocess模块详解(二)
    subprocess模块详解(一)
    大数据环境下的数据仓库建设
    Java计算字符串相似度
    Pandas matplotlib无法显示中文解决办法
    Hadoop YARN参数介绍(四)[推荐]
    Hadoop YARN参数介绍(三)
    wsl2 ubuntu20.04 上使用 kubeadm 创建一个单主集群
  • 原文地址:https://www.cnblogs.com/saratearing/p/5741133.html
Copyright © 2011-2022 走看看