Solr 7.2.1配置smartcn中文分词器

  近期准备将歌词Style后端进行重构,首先将原来内嵌的Lucene 4.10.2升级到Solr 7.2.1。印象中上次使用Solr应该还是3的版本,变化非常大,整体看了下,其实简化了不少配置,通过admin管理界面能很方便的添加core和fieldType,也不用到处copy xml。这里简单记录下:

1、下载、解压:

wget http://mirrors.hust.edu.cn/apache/lucene/solr/7.2.1/solr-7.2.1.zip
unzip solr-7.2.1.zip
cd solr-7.2.1

2、加入smartcn分词器
  解压的contrib里面其实已经包含了smartcn分词器,默认没有启用,这里将其加入到默认的config中。

一、编辑server/solr/configsets/_default/conf/solrconfig.xml
节点最后增加:

<lib dir="${solr.install.dir:../../../..}/contrib/analysis-extras/lucene-libs/" regex="lucene-analyzers-smartcn-\d.*\.jar" />

二、编辑server/solr/configsets/_default/conf/managed-schema
节点里面增加

<fieldType name="text_cn_smart" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
  </analyzer>
</fieldType>

3、启动、创建core:
  由于我这里是root用户安装,需要加-force,官方不建议root下安装。

./solr start -force
./solr create -c lyric -force

  通过命令创建的core,默认会读取_default下面的配置,所以在上一步需要加入所需要的组件。如无问题则可以通过浏览器打开管理界面进行下一步。

4、增加Field:
  在Core Admin可以看到刚才创建的lyric已经出现在了右边,在Core Selector中选择lyric,可以看到更详细的信息,下拉框中已经给我们建好了几个Field,其中有一个类型为string的id和_root_,这个建议保留使用,并两者配置保持一致,其余的Dynamic Field依据情况可以删除,具体使用方法可以参考_default中的配置文件,注释说的很详细。

  这里我们直接选择Scheme -> Add Field,将需要索引的中文字段field type设置为之前设置的text_cn_smart,若是没有这一选项,检查前面的步骤。Solr已经具备通过dataimport组件导入任意来源的数据,不过我建议还是在程序中来添加数据,这里就不细说dataimport了。

5、验证:
  通过程序导入测试数据后,可以通过Analysis界面检查分词器是否正常工作,Query界面可以模拟查询,检验结果。_default中的配置是一份比较齐全的参考,在生产环境建议移除不需要的选项,避免影响性能。顺便提一句:Solr热度已经明显低于Elasticsearch。