Bootstrap

Solr:配置IK中文分词器

配置Apache Solr使用IK中文分词器通常涉及以下几个步骤:

1. 获取IK分词器

从IK分词器的官方仓库、GitHub或其他可信来源下载适用于您Solr版本的IK分词器JAR包。确保下载的版本与您的Solr版本兼容。例如,如果您使用的是Solr 8.x版本,应下载对应版本的IK分词器。

2. 复制IK分词器到Solr的lib目录

将下载的IK分词器JAR文件(通常名为ik-analyzer-x.y.z.jar)复制到Solr服务器的lib目录下。该目录通常位于Solr安装目录的server/solr-webapp/webapp/WEB-INF/lib路径下。如果您的Solr部署结构不同,请确保将JAR文件放置到Solr实例能够加载到类路径的位置。

3. 配置managed-schema或schema.xml

编辑Solr核心的managed-schema(Solr 5.x及更高版本)或schema.xml(Solr 4.x及更低版本)文件,添加或修改字段类型以使用IK分词器。

对于managed-schema

<fieldType name="text_ik" class="solr.TextField">
  <analyzer type="index">
    <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false"/>
    <!-- 可选的分词器参数调整与过滤器配置 -->
  </analyzer>
  <analyzer type="query">
    <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true"/>
    <!-- 可选的分词器参数调整与过滤器配置 -->
  </analyzer>
</fieldType>

对于schema.xml

<fieldType name="text_ik" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false"/>
    <!-- 可选的分词器参数调整与过滤器配置 -->
  </analyzer>
  <analyzer type="query">
    <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true"/>
    <!-- 可选的分词器参数调整与过滤器配置 -->
  </analyzer>
</fieldType>

这里创建了一个名为text_ik的字段类型,其tokenizer类指定为IK分词器的工厂类。useSmart参数控制是否启用智能分词模式(默认为false,即细粒度切分;true表示开启智能分词)。可以根据需要添加或调整IK分词器的其他参数以及后续的分析器组件(如过滤器)。

4. 应用IK分词器到字段

managed-schemaschema.xml中,将需要使用IK分词器的字段的type属性设置为刚才创建的text_ik类型。例如:

<field name="content" type="text_ik" indexed="true" stored="true" multiValued="false"/>

这将使字段content使用IK分词器进行索引和存储。

5. (可选)配置IK分词器的词典和扩展功能

IK分词器支持自定义词典、停用词词典、扩展词典等功能。如果您需要使用这些功能,通常需要:

  • 将自定义词典文件(如ext.dicstopword.dic等)放置到Solr服务器的某个目录下。
  • solrconfig.xml文件中配置IK分词器的相关参数,指向这些词典文件的路径。例如:
<config>
  <!-- ... -->
  <requestHandler name="/select" class="solr.SearchHandler">
    <!-- ... -->
    <initParams path="/update/**,/query,/select,/spell">
      <lst name="defaults">
        <!-- ... -->
        <str name="ikAnalyzer.useSmart">true</str>
        <str name="ikAnalyzer.userDict">path/to/userdict.dic</str>
        <str name="ikAnalyzer.extDict">path/to/ext.dic</str>
        <str name="ikAnalyzer.stopwords">path/to/stopword.dic</str>
      </lst>
    </initParams>
  </requestHandler>
  <!-- ... -->
</config>
  • 重启Solr服务,使配置更改生效。

6. 测试分词效果

通过Solr Admin UI的Analysis界面或直接发送HTTP请求到Solr的/analyze接口,测试IK分词器对指定文本的分词效果,确保分词结果符合预期。

7. 重启Solr服务

完成上述配置后,重启Solr服务以加载新的分词器配置。对于Solr服务的重启方式,请参考您的Solr部署指南或相关文档。

至此,Solr已成功配置为使用IK中文分词器处理指定字段的中文文本。后续索引和查询操作将利用IK分词器进行分词处理。

;