设为首页 收藏本站
查看: 1061|回复: 0

[经验分享] 二、SOLR搭建企业搜索平台【中文分词】

[复制链接]

尚未签到

发表于 2016-12-16 07:21:39 | 显示全部楼层 |阅读模式
  这篇文章,主要说的是怎么在solr中加入中文分词:
    1、下载分词器:http://code.google.com/p/mmseg4j/
    2、将解压后的mmseg4j-1.8.2目录下的mmseg4j-all-1.8.2.jar拷贝到Tomcat _HOME\webapps\solr\WEB-INF\lib目录下。
    3、添加词库:在C:\solr-tomcat\solr目录下新建dic文件夹,将解压后的sogou-dic\data目录下的words.dic拷贝到C:\solr-tomcat\solr\dic目录下。
    4、更改schema.xml(c:\solr-tomcat\solr\conf\)文件,使分词器起到作用。更改内容为:

<types>
……
<!--mmseg4j field types-->
<fieldType name="textComplex" class="solr.TextField" positionIncrementGap="100" >  
<analyzer>  
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="C:\solr-tomcat\solr\dic"/>  
<filter class="solr.LowerCaseFilterFactory"/>  
</analyzer>  
</fieldType>  
<fieldType name="textMaxWord" class="solr.TextField" positionIncrementGap="100" >  
<analyzer>  
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="C:\solr-tomcat\solr\dic"/>  
<filter class="solr.LowerCaseFilterFactory"/>  
</analyzer>  
</fieldType>  
<fieldType name="textSimple" class="solr.TextField" positionIncrementGap="100" >  
<analyzer>  
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="C:\solr-tomcat\solr\dic"/>  
<filter class="solr.LowerCaseFilterFactory"/>  
</analyzer>  
</fieldType>
……
</types>

  注:dicPath="C:\solr-tomcat\solr\dic"是你的词库路径,我的是放在了C:\solr-tomcat\solr\dic目录下。

<fields>
……
<field name="simple" type="textSimple" indexed="true" stored="true" multiValued="true"/>  
<field name="complex" type="textComplex" indexed="true" stored="true" multiValued="true"/>  
<field name="text" type="textMaxWord" indexed="true" stored="true" multiValued="true"/>
……
</fields>


<copyField source="simple" dest="text"/>
<copyField source="complex" dest="text"/>

  重启你的tomcat 。
访问:http://localhost:8089/solr/admin/analysis.jsp可以看 mmseg4j 的分词效果。在 Field 的下拉菜单选择 name,然后在应用输入 complex。分词的结果,如下图:
DSC0000.jpg
 呵呵,可以运行起来了,那就添加个文档试试吧,在解压后的apache-solr-1.4.0\example\exampledocs目录下创建 mmseg4j-solr-demo-doc.xml 文档,内容如下:

  <add>  
<doc>  
<field name="id">1</field>  
<field name="text">昨日,记者从解放军总参谋部相关部门获悉,截至3月28日,解放军和武警部队累计出动7.2万人次官兵支援地方抗旱救灾。组织民兵预备役人员20.2万人 次支援地方抗旱救灾。</field>  
</doc>  
<doc>  
<field name="id">2</field>  
<field name="text">下半年房价调整就是挤水分 房价回不到去年水平。</field>  
</doc>  
<doc>  
<field name="id">3</field>  
<field name="text">solr是基于Lucene Java搜索库的企业级全文搜索引擎,目前是apache的一个项目。</field>  
</doc>  
<doc>  
<field name="id">4</field>  
<field name="text">中国人民银行是中华人民共和国的中央银行。</field>  
</doc>  
</add>

  然后在 cmd 下运行 post.jar,如下:
  F:\lucene\solr\apache-solr-1.4.0\example\exampledocs>java -Durl=http://localhost:8089/solr/update -Dcommit=yes -jar post.jar mmseg4j-solr-demo-doc.xml  (注意:F:\lucene\solr 要根据你自己的实际情况而定)
  查看是否有数据,访问:http://localhost:8089/solr/admin/ 在Query String: 中输入“中国”,显示如下图所示:
DSC0001.jpg
呵呵,成功了。至于schema.xml中的配置属性会在下一章中进行详细的介绍。
  [Solr分词顺序]
  Solr建立索引和对关键词进行查询都得对字串进行分词,在向索引库中添加全文检索类型的索引的时候,Solr会首先用空格进行分词,然后把分词结果依次使用指定的过滤器进行过滤,最后剩下的结果才会加入到索引库中以备查询。分词的顺序如下:
索引
1:空格whitespaceTokenize
2:过滤词(停用词,如:on、of、a、an等) StopFilter
3:拆字WordDelimiterFilter
4:小写过滤LowerCaseFilter
5:英文相近词EnglishPorterFilter
6:去除重复词RemoveDuplicatesTokenFilter
查询
1:查询相近词
2:过滤词
3:拆字
4:小写过滤
5:英文相近词
6:去除重复词
以上是针对英文,中文的除了空格,其他都类似
  文档下载:SOLR搭建企业搜索平台.doc

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-314830-1-1.html 上篇帖子: Solr索引大小分析 下篇帖子: solr多实例配置以及应用中文分词器IKAnalyzer
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表