solr6.5.1中文分词

  • 为什么使用中文分词
  • 下载jcseg
  • maven打包
  • 导入jar包
  • 编写solrconfigxml
  • 编辑managed-schema文件
  • 设置分词字段
  • 测试

为什么使用中文分词

举个例子,假如输入“周杰伦的演唱会”,就算使用模糊查询,也只能找到索引中与“xxx周杰伦演唱会xxx”相匹配的内容。

如果使用了中文分词,则可以找到所有与“周杰伦”、“演唱会”、甚至与“周杰”相关的内容。

下载jcseg

中文分词工具有很多,如比较常见的IK,我这里使用的是jcseg。

下载地址:https://github.com/lionsoul2014/jcseg

直接下载zip就行了。

maven打包

解压下载好的zip文件,进入文件目录,执行maven打包命令:

mvn clean install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true

图(1)

导入jar包

打包成功后,进入子项目 jcseg-core 下的 target 文件夹,把 jcseg-core-2.1.0.jar 文件拷贝到 【solr安装目录】/example/example-DIH/solr/db/lib/..路径下面。

在子项目 jcseg-analyzer 下面的 target 文件夹下,找到 jcseg-analyzer-2.1.0.jar 文件,拷贝到【solr安装目录】/example/example-DIH/solr/db/lib/..路径下面。

注意:我这里用db做实验,如果想用在其他核心配置中文分词,自行切换对应核心目录即可

编写solrconfig.xml

进入与lib同级的conf目录,找到solrconfig.xml并编辑此文件,

找到有如下代码的地方:

<lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />

  <lib dir="${solr.install.dir:../../../..}/contrib/extraction/lib" regex=".*\.jar" />
  <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-cell-\d.*\.jar" />

  <lib dir="${solr.install.dir:../../../..}/contrib/langid/lib/" regex=".*\.jar" />
  <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-langid-\d.*\.jar" />

  <lib dir="${solr.install.dir:../../../..}/contrib/velocity/lib" regex=".*\.jar" />
  <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-velocity-\d.*\.jar" />

在之后加上

  <lib dir="${solr.install.dir:../../../..}/example/example-DIH/solr/db/lib/" regex="jcseg-core-2.1.1.jar" />
  <lib dir="${solr.install.dir:../../../..}/example/example-DIH/solr/db/lib/" regex="jcseg-analyzer-2.1.1.jar" />

编辑完后记得保存。

编辑managed-schema文件

打开conf目录下的managed-schema文件,在文件末尾</schema>之前加入如下代码:

<!-- 复杂模式分词: -->
  <fieldtype name="textComplex" class="solr.TextField">
      <analyzer>
          <tokenizer class="org.lionsoul.jcseg.analyzer.JcsegTokenizerFactory" mode="complex"/>
      </analyzer>
  </fieldtype>
  <!-- 简易模式分词: -->
  <fieldtype name="textSimple" class="solr.TextField">
      <analyzer>
          <tokenizer class="org.lionsoul.jcseg.analyzer.JcsegTokenizerFactory" mode="simple"/>
      </analyzer>
  </fieldtype>
  <!-- 检测模式分词: -->
  <fieldtype name="textDetect" class="solr.TextField">
      <analyzer>
          <tokenizer class="org.lionsoul.jcseg.analyzer.JcsegTokenizerFactory" mode="detect"/>
      </analyzer>
  </fieldtype>
  <!-- 检索模式分词: -->
  <fieldtype name="textSearch" class="solr.TextField">
      <analyzer>
          <tokenizer class="org.lionsoul.jcseg.analyzer.JcsegTokenizerFactory" mode="search"/>
      </analyzer>
  </fieldtype>

记得保存。

设置分词字段

找到设置<field>的地方,比如我这里找得的是:

 <field name="title" type="text_general" indexed="true" stored="true" multiValued="true"/>

修改type为如下代码:

 <field name="title" type="textSearch" indexed="true" stored="true" multiValued="true"/>

测试

首先关闭solr

solr stop -all

然后启动solr

solr -e dih

图(2)

启动成功后进入solr主页,选择db核心(如果你中文分词配的其他核心选对应的就行),然后选择Analysis,随便输入一串中文,然后选择对应字段,我这里配的是title字段用中文分词(详情见上一步),所以Analyse Fieldname / FieldType我选了title,点击Analysis views即可看到效果:

图(3)

周杰伦被分出来了,可惜周杰没有,看来周杰还不是很出名啊。。。

实际使用中,title中包含这些字段的都会被查出来,我这里因为没有数据就不做演示了,感兴趣的同学可以自己试一试吧。

时间: 2024-10-17 02:03:33

solr6.5.1中文分词的相关文章

我与solr(六)--solr6.0配置中文分词器IK Analyzer

转自:http://blog.csdn.net/linzhiqiang0316/article/details/51554217,表示感谢. 由于前面没有设置分词器,以至于查询的结果出入比较大,并且无法进行正确的高亮显示.现在配置一下分词器来解决相关问题. solr6.0中进行中文分词器IK Analyzer的配置和solr低版本中最大不同点在于IK Analyzer中jar包的引用.一般的IK分词jar包都是不能用的,因为IK分词中传统的jar不支持solr6.0这个高版本的,所以就会发送运行

Solr6.5配置中文分词IKAnalyzer和拼音分词pinyinAnalyzer (二)

之前在 Solr6.5在Centos6上的安装与配置 (一) 一文中介绍了solr6.5的安装.这篇文章主要介绍创建Solr的Core并配置中文IKAnalyzer分词和拼音检索. 一.创建Core: 1.首先在solrhome(solrhome的路径和配置见Solr6.5在Centos6上的安装与配置 (一)中solr的web.xml)中创建mycore目录; [[email protected] down]# [[email protected] down]# mkdir /down/apa

Solr6.6.0添加IK中文分词器

IK分词器就是一款中国人开发的,扩展性很好的中文分词器,它支持扩展词库,可以自己定制分词项,这对中文分词无疑是友好的. jar包下载链接:http://pan.baidu.com/s/1o85I15o 密码:p82g下载好之后,将IK对应的jar复制到项目的D:\tomcat\webapps\solr\WEB-INF\lib下面,然后在WEB-INF下面创建一个classes的目录,将其余三个文件(IKAnalyzer.cfg.xml , ext.dic和stopword.dic)复制到这个cl

solr 中文分词器IKAnalyzer和拼音分词器pinyin

solr分词过程: Solr Admin中,选择Analysis,在FieldType中,选择text_en 左边框输入 "冬天到了天气冷了小明不想上学去了",点击右边的按钮,发现对每个字都进行分词.这不符合中国人的习惯. solr6.3.0自带中文分词包,在 \solr-6.3.0\contrib\analysis-extras\lucene-libs\lucene-analyzers-smartcn-6.3.0.jar,但是不能自定义词库 好在我们有IKAnalyzer(已无人更新

PHP中文分词扩展 SCWS

1.scws简介 SCWS 是 Simple Chinese Word Segmentation 的首字母缩写(即:简易中文分词系统). 这是一套基于词频词典的机械式中文分词引擎,它能将一整段的中文文本基本正确地切分成词. 词是中文的最小语素单位,但在书写时并不像英语会在词之间用空格分开, 所以如何准确并快速分词一直是中文分词的攻关难点. SCWS 采用纯 C 语言开发,不依赖任何外部库函数,可直接使用动态链接库嵌入应用程序, 支持的中文编码包括 GBK.UTF-8 等.此外还提供了 PHP 扩

Elasticsearch安装中文分词插件ik

Elasticsearch默认提供的分词器,会把每个汉字分开,而不是我们想要的根据关键词来分词.例如: curl -XPOST "http://localhost:9200/userinfo/_analyze?analyzer=standard&pretty=true&text=我是中国人" 我们会得到这样的结果: { tokens: [ { token: text start_offset: 2 end_offset: 6 type: <ALPHANUM>

中文分词实践(基于R语言)

背景:分析用户在世界杯期间讨论最多的话题. 思路:把用户关于世界杯的帖子拉下来,然后做中文分词+词频统计,最后将统计结果简单做个标签云,效果如下: 后续:中文分词是中文信息处理的基础,分词之后,其实还有特别多有趣的文本挖掘工作可以做,也是个知识发现的过程,以后有机会再学习下. ================================================== * 中文分词常用实现: 单机:R语言+Rwordseg分词包 (建议数据量<1G) 分布式:Hadoop+Smallse

中文分词之结巴分词~~~附使用场景+demo

常用技能(更新ing):http://www.cnblogs.com/dunitian/p/4822808.html#skill 技能总纲(更新ing):http://www.cnblogs.com/dunitian/p/5493793.html 在线演示:http://cppjieba-webdemo.herokuapp.com 完整demo:https://github.com/dunitian/TempCode/tree/master/2016-09-05 先说下注意点,结巴分词他没有对分

php+中文分词scws+sphinx+mysql打造千万级数据全文搜索

Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎.意图为其他应用提供高速.低空间占用.高结果 相关度的全文搜索功能.Sphinx可以非常容易的与SQL数据库和脚本语言集成.当前系统内置MySQL和PostgreSQL 数据库数据源的支持,也支持从标准输入读取特定格式 的XML数据.Sphinx创建索引的速度为:创建100万条记录的索引只需3-4分钟,创建1000万条记录的索引可以在50分钟内完成,而只包含最新10万条记录的增量索引,重建一次只需几十秒.Sphinx的