编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

记录自己搭建solr配置中文分词的过程供大家参考

wxchong 2024-10-23 15:51:02 开源技术 6 ℃ 0 评论

1 IKAnalyzer分词器配置。

1.1拷贝IKAnalyzer2012_u6\IKAnalyzer2012_u6.jar到C:\apache-tomcat-6.0.32\webapps\

solr\WEB-INF\lib文件夹下面

1.2 在C:\apache-tomcat-6.0.32\webapps\solr\WEB-INF文件夹下面新建classes文件夹,拷贝IKAnalyzer2012_u6\IKAnalyzer.cfg.xml和IKAnalyzer2012_u6\stopword.dic到classes文件夹里面,修改IKAnalyzer.cfg.xml,新增

<entry key="ext_dict">ext.dic;</entry>

在classes下面新建ext.dic文件,ext.dic里面是新增自己要添加的扩展词,stopword.dic里面是自己新增的停止词,有些词语分词没什么意义,所以我们就要把它过滤掉,例如 a an and 啊 哦,修改完之后把编码保存为UTF-8格式,要不然不起效果,

1.3 修改C:\solr\apache-solr-3.4.0\example\multicore\core0\conf\schema.xml文件,新增类型text_ik,title_search字段类型改成text_ik。

<!-- 我添加的IK分词 -->

<fieldType name="text_ik" class="solr.TextField">

<analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/>

<analyzer type="query" isMaxWordLength="true" class="org.wltea.analyzer.lucene.IKAnalyzer"/>

</fieldType>

<field name="title_search" type="text_ik" indexed="true" stored="true"/>

1.4 reindex solr数据之后,进行查询,可以查看分词效果。

1.5 搜索足球,得到这笔数据,分词成功。


2 mmseg4j分词器配置。

2.1把mmseg4j-1.8.5\dist下面的所有jar文件拷贝到C:\apache-tomcat-6.0.32\webapps\

solr\WEB-INF\lib文件夹下面

2.2 拷贝data到C:\solr\apache-solr-3.4.0\example\multicore中(与core文件平级),并改名为dic。

2.2.1 chars.dic,是单个字,和对应的频率,一行一对,字在全面,频率在后面,中间用空格分开。这个文件的信息是 complex 模式要用到的。在最后一条过虑规则中使用了频率信息。从 1.5 版后已经把它打包进 jar 里,一般不用关心它。不过可以在词库目录下放一个同名文件覆盖它。

2.2.2 units.dic,是单位的字,如:分、秒、年。这一文件是我在 mmseg4j 1.6 后加入的,也是一行一条。主要是在数字后面的单位信息切分好,不与words.dic中的词有混淆。同时也打包进 jar 里,目前还是试行,如果不喜欢它,可以用空的文件放到词库目录下覆盖它。

2.2.3 words.dic,是核心的词库文件,一行一条,不需要其它任何数据(如词长)。1.0 版是用 rmmseg(ruby 的 mmseg 实现) 的词库。1.5版后 mmseg4j 改用 sogou 词库,可以 http://www.sogou.com/labs/dl/w.html 找到下载。然后我把它去了频率等信息,并转为 UTF-8 编码。

2.2.4 words-my.dic,是自定义词库文件(其实是 mmseg4j 可以从多个文件读取词)。这功能是 1.6 版加入的。它的格式与 words.dic 一样,只不过 XXX 部分是如您自己写的名字,如:源码包里的 data/words-my.dic。注意:自定义词库文件名必需是 "words" 为前缀和 ".dic" 为后缀。

2.2.5修改完之后把编码保存为UTF-8格式,要不然不起效果,

2.3 修改C:\solr\apache-solr-3.4.0\example\multicore\core0\conf\schema.xml文件,新增类型text_mmseg4j,title_sort字段类型改成text_mmseg4j。

<!-- mmseg4j分词器 -->

<fieldType name="text_mmseg4j" class="solr.TextField" >

<analyzer type="index">

<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="../dic" /><!--此处为分词器词典所处位置-->

</analyzer>

<analyzer type="query">

<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="../dic" /><!--此处为分词器词典所处位置-->

</analyzer>

</fieldType>

<field name="title_sort" type="text_mmseg4j" indexed="true" stored="true"/>

2.4 reindex solr数据之后,进行查询,可以查看分词效果。

2.5 搜索足球,得到这笔数据,分词成功。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表