乐趣区

关于后端:Solr-811入门教程4中文分词

中文分词

默认对中文分词的成果并不好,咱们增加 IK 分词。

下载

从新下载:先下载 solr8 版本对应的 ik 分词器,分词器 GitHub 源码地址:https://github.com/magese/ik-…

增加动静加载词典表性能,在不须要重启 solr 服务的状况下加载新增的词典。

敞开默认主词典请在 IKAnalyzer.cfg.xml 配置文件中设置 use_main_dictfalse

ik-analyzer-8.5.0.jar 下载地址

装置

下载好之后,将 IK 对应的 jar 将下载好的 jar 包放入 solr-8.11.2/server/solr-webapp/webapp/WEB-INF/lib 目录中,而后在 server\solr-webapp\webapp\WEB-INF\ 上面创立一个 classes 的目录,将 jar 包中的 5 个文件(IKAnalyzer.cfg.xml , ext.dic 和 stopword.dic,dynamicdic.txt,ik.conf)复制到这个 classes 目录下。

stopword.dic 和 ext.dic 别离为禁止词词库和扩大词库,留神,词库的的编码方式为 UTF-8 无 BOM 的编码方式,增加新词的时候,须要留神。

dynamicdic.txt 为动静词库须要配合 ik.conf 应用,

ik.conf 中配置动静词库文件名,及上次批改版本号 lastupdate,每次批改动静词库,须要更新 lastupdate 的值。留神批改文件,原文件配置的内容可能并不适用于所有我的项目。

  1. files为动静词典列表,能够设置多个词典表,用逗号进行分隔,默认动静词典表为dynamicdic.txt
  2. lastupdate默认值为 0,每次对动静词典表批改后请 +1,不然不会将词典表中新的词语增加到内存中。lastupdate 采纳的是 int 类型,lastUpdatelong 类型,能够用工夫戳。

dynamicdic.txt 为动静词库,在此文件配置的词语不需重启服务即可加载进内存中。以 # 结尾的词语视为正文,将不会加载到内存中。

配置

编辑 core 的 conf 下的 managed-schema 文件,增加

<!-- ik 分词器 -->
<fieldType name="text_ik" class="solr.TextField">
  <analyzer type="index">
      <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/>
      <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
      <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>
      <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>

将 description 字段设置为 text_ik 类型,从新导入数据。留神:肯定要从新导入数据。

查问

到 core 的分词菜单中验证一下 description 字段是否按中文分词了,能够看到一件依照中文的分词习惯进行了分词。

而后执行一下搜寻,能够看到搜寻 ” 大家 ” 曾经能搜到了

本文由 mdnice 多平台公布

退出移动版