solr中文分词(mmseg4j)

来源:互联网 发布:java任务调度quartz 编辑:程序博客网 时间:2024/04/29 05:06

1、从http://code.google.com/p/mmseg4j/    下载mmseg4j

mmseg4j-1.8.4解压后

 

2、在$SOLR_HOME下建立lib和dic两个目录,讲mmseg4j-all-1.8.4.jar拷贝到lib目录,将data里的.dic文件拷贝到dic目录

 

3、修改Schema.xml

添加fieldType

Xml代码  收藏代码
  1.  <types>  
  2.       <fieldType name="textComplex" class="solr.TextField" positionIncrementGap="100" >      
  3.            <analyzer>      
  4.               <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="/opt/solr/example/solr/dic"/>      
  5.               <filter class="solr.LowerCaseFilterFactory"/>      
  6.           </analyzer>      
  7.       </fieldType>      
  8.    
  9.     <fieldType name="textMaxWord" class="solr.TextField" positionIncrementGap="100" >      
  10.        <analyzer>      
  11.            <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="/opt/solr/example/solr/dic"/>      
  12.            <filter class="solr.LowerCaseFilterFactory"/>      
  13.        </analyzer>      
  14.     </fieldType>      
  15.         
  16.     <fieldType name="textSimple" class="solr.TextField" positionIncrementGap="100" >      
  17.       <analyzer>      
  18.           <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="/opt/solr/example/solr/dic"/>      
  19.           <filter class="solr.LowerCaseFilterFactory"/>      
  20.       </analyzer>      
  21.     </fieldType>    
  22.   
  23. ..  
  24. </types>  
 
Xml代码  收藏代码
  1. <field name="simple" type="textSimple" indexed="true" stored="true" multiValued="true"/>      
  2. <field name="complex" type="textComplex" indexed="true" stored="true" multiValued="true"/>      
  3. <field name="maxword" type="textMaxWord" indexed="true" stored="true" multiValued="true"/>   
 
Xml代码  收藏代码
  1. <copyField source="simple" dest="text"/>    
  2. <copyField source="complex" dest="text"/>    
 

 

重启tomcat


进入 http://yourhost:8080/solr-example/admin/analysis.jsp

 

哦也,我们的中文分词大功告成了

 

我们试着提交些中文到solr里,然后进行查询

Xml代码  收藏代码
  1. chinese.xml  
  2. <add>      
  3.     <doc>      
  4.         <field name="id">1</field>      
  5.         <field name="title">夜晚和白天不同,如果相机设置不准确的话,照片拍出来就会发糊。那么本期佳能单反课堂就带您详细了解夜景拍摄的参数设置,同时为您讲解什么叫做“安全快门”。除此之外,还有更多新奇有趣的特殊拍摄手法,还等什么?马上进入本期的节目吧!</field>      
  6.     </doc>      
  7.     <doc>      
  8.         <field name="id">2</field>      
  9.         <field name="title">冰动娱乐自主研发的虚幻3即时回合制网络游戏!UnrealEngine3倾力打造、最终幻想式的创新玩法以及天马行空般的幻想三国题材将带给你耳目一新的全新感受。</field>      
  10.     </doc>      
  11.     <doc>      
  12.         <field name="id">3</field>      
  13.         <field name="title">solr是基于Lucene Java搜索库的企业级全文搜索引擎,目前是apache的一个项目。</field>      
  14.     </doc>      
  15.     <doc>      
  16.         <field name="id">4</field>      
  17.         <field name="title">中国人民银行是中华人民共和国的中央银行。</field>      
  18.     </doc>      
  19. </add>   

 

我们用curl进行提交

命令行代码  收藏代码
  1. curl 'http://localhost:8080/solr-example/update/?commit=true' -H "Content-Type: text/xml" --data-binary @chinese.xml  

 

 

接下来我们试着查询一下:

 

查询结果

Xml代码  收藏代码
  1. <response>  
  2.     <lst name="responseHeader">  
  3.         <int name="status">0</int>  
  4.         <int name="QTime">2</int>  
  5.         <lst name="params">  
  6.             <str name="indent">on</str>  
  7.             <str name="start">0</str>  
  8.             <str name="q">title:单反</str>  
  9.             <str name="rows">10</str>  
  10.             <str name="version">2.2</str>  
  11.         </lst>  
  12.     </lst>  
  13.     <result name="response" numFound="1" start="0">  
  14.         <doc>  
  15.             <str name="id">1</str>  
  16.             <arr name="title"><str>夜晚和白天不同,如果相机设置不准确的话,照片拍出来就会发糊。那么本期佳能单反课堂就带您详细了解夜景拍摄的参数设置,同时为您讲解什么叫做“安全快门”。除此之外,还有更多新奇有趣的特殊拍摄手法,还等什么?马上进入本期的节目吧!</str></arr>  
  17.        </doc>  
  18.     </result>  
  19. </response>  
 

可能会遇到的问题:

1、在Query String:输入中文时候会乱码导致查询不到结果

解决办法:修改tomcat的server.xml

Xml代码  收藏代码
  1. <Server ...>  
  2.  <Service ...>  
  3.    <Connector ... URIEncoding="UTF-8"/>  
  4.      ...  
  5.    </Connector>  
  6.  </Service>  
  7. </Server>  
0 0