`

solr 中文分词 mmseg4j 使用例子

阅读更多

solr 中文分词 mmseg4j 使用例子

 

原文出处:http://blog.chenlb.com/2009/04/solr-chinese-segment-mmseg4j-use-demo.html

mmseg4j 第一个版本就可以方便地与 solr 集成,在 google code 上面有简单的说明,第一版的发布博客也有简单的使用说明:中文分词 mmseg4j。为了更清楚说明在 solr 中使用 mmseg4j 中文分词,还是写篇博客吧。

目前有两个版本的 mmseg4j,1.7 版比较耗内存(一个词库目录就要 50M 左右),所以在默认jvm内存大小会抛出 OutOfMemoryErroy。我这里示例两个词库目录,所以不用目前最新版 1.7.2。而用 1.6.2 版。下载:mmseg4j-1.6.2 和 词库,或就下载一个源码包(包括了词库,从源码构建请看:中文分词 mmseg4j 1.7.2 版发布),把 mmseg4j-all-1.6.2.jar 放到 solr.home/lib 。

mmseg4j 在 solr 中主要支持两个参数:mode、dicPath。mode 表示是什么模式分词(有效值:simplex、complex、max-word,如果输入了无效的默认用 max-word。)。dicPath 是词库目录可以是绝对目录,也可以是相对目录(是相对 solr.home 目录下的,dic 就会在 solr.home/dic 目录下找词库文件),如果不指定就是默认在 CWD/data 目录(程序运行当前目录的data子目录)下找。

改 solr 配置文件,主要是修改 schema.xml,我添加三个 field type,如下:

  1. <fieldType name="textComplex" class="solr.TextField" positionIncrementGap="100" >  
  2.     <analyzer>  
  3.         <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="dic"/>  
  4.         <filter class="solr.LowerCaseFilterFactory"/>  
  5.     </analyzer>  
  6. </fieldType>  
  7. <fieldType name="textMaxWord" class="solr.TextField" positionIncrementGap="100" >  
  8.     <analyzer>  
  9.         <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" dicPath="dic"/>  
  10.         <filter class="solr.LowerCaseFilterFactory"/>  
  11.     </analyzer>  
  12. </fieldType>  
  13. <fieldType name="textSimple" class="solr.TextField" positionIncrementGap="100" >  
  14.     <analyzer>  
  15.         <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="n:/OpenSource/apache-solr-1.3.0/example/solr/my_dic"/>  
  16.         <filter class="solr.LowerCaseFilterFactory"/>  
  17.     </analyzer>  
  18. </fieldType>  

说明:有多少不同的词库目录就会有多少个词库数组结构的实例,由上面的配置,会有两个实例。注意用 1.7.2 版会内存溢出。

定义几个字段:

  1. <field name="simple" type="textSimple" indexed="true" stored="true"/>  
  2. <field name="complex" type="textComplex" indexed="true" stored="true"/>  
  3. <field name="text" type="textMaxWord" indexed="true" stored="true"/>  

再添加个 copyField(最后面加吧):

  1. <copyField source="text" dest="simple" />  
  2. <copyField source="text" dest="complex" />  

现在 mmseg4j 在 solr 中的使用配置好了。接下来安装 solr 到 tomcat。

solr 1.3 版早就出了,我就用它为示例的 solr。下载:solr-1.3.0,如:解压放到 N:/OpenSource/apache-solr-1.3.0。在 tomcat 中怎么安装 solr 请看:Solr 使用入门介绍,以搜索论坛帖子为示例, solr install , solr tomcat solr on tomcat

我是用 TOMCAT_HOME/conf/Catalina/localhost/solr.xml 的安装方式,指到 n:/OpenSource/apache-solr-1.3.0/example/solr。tomcat 6 可能没有这个目录,手动创建这目录。

启动 tomcat 可以看到 mmseg4j 的相关日志,然后在 http://localhost:8080/solr/admin/analysis.jsp 可以看 mmseg4j 的分词效果。在 Field 的下拉菜单选择 name,然后在应用输入 complex。分词的结果,如下图:

mmseg4j solr analysis 调试,点击放大

mmseg4j solr analysis 调试,点击放大

好了,可以运行起来了,那就添加个文档试下,在 n:/OpenSource/apache-solr-1.3.0/example/exampledocs 下创建 mmseg4j-solr-demo-doc.xml 文档:

  1. <add>  
  2.     <doc>  
  3.         <field name="id">1</field>  
  4.         <field name="text">京华时报2009年1月23日报道 昨天,受一股来自中西伯利亚的强冷空气影响,本市出现大风降温天气,白天最高气温只有零下7摄氏度,同时伴有6到7级的偏北风。</field>  
  5.     </doc>  
  6.     <doc>  
  7.         <field name="id">2</field>  
  8.         <field name="text">昨日金正日抵达长春市,进行两天的长春市内电话系统考察。</field>  
  9.     </doc>  
  10.     <doc>  
  11.         <field name="id">3</field>  
  12.         <field name="text">陈教授正在研究生命起源,他的研究生正在打球。</field>  
  13.     </doc>  
  14.     <doc>  
  15.         <field name="id">4</field>  
  16.         <field name="text">中国人民银行是中华人民共和国的中央银行。</field>  
  17.     </doc>  
  18. </add>  

然后提交到 solr,在 cmd 下运行 post.jar,如下:

N:\OpenSource\apache-solr-1.3.0\example\exampledocs>java -Durl=http://localhost:8080/solr/update -Dcommit=yes -jar post.jar mmseg4j-solr-demo-doc.xml
SimplePostTool: version 1.2
SimplePostTool: WARNING: Make sure your XML documents are encoded in UTF-8, other encodings are not currently supported
SimplePostTool: POSTing files to http://localhost:8080/solr/update..
SimplePostTool: POSTing file mmseg4j-solr-demo-doc.xml
SimplePostTool: COMMITting Solr index changes..

注意:mmseg4j-solr-demo-doc.xml 要是 UTF-8 格式,不然提交后会乱码。

看下是否有数据:http://localhost:8080/solr/select/?q=*:*,有数据,应该正常。

然后,找“西伯利亚”.

simple:http://localhost:8080/solr/select?indent=on&q=simple:%E8%A5%BF%E4%BC%AF%E5%88%A9%E4%BA%9A&hl=on&hl.fl=simple%2Ccomplex%2Ctext&fl=id,结果如下:

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <response>  
  3.   
  4. <lst name="responseHeader">  
  5.  <int name="status">0</int>  
  6.  <int name="QTime">0</int>  
  7.  <lst name="params">  
  8.   <str name="fl">id</str>  
  9.   <str name="indent">on</str>  
  10.   <str name="q">simple:西伯利亚</str>  
  11.   <str name="hl.fl">simple,complex,text</str>  
  12.   <str name="hl">on</str>  
  13.  </lst>  
  14. </lst>  
  15. <result name="response" numFound="0" start="0"/>  
  16. <lst name="highlighting"/>  
  17. </response>  

comlex:http://localhost:8080/solr/select?indent=on&q=complex:%E8%A5%BF%E4%BC%AF%E5%88%A9%E4%BA%9A&hl=on&hl.fl=simple%2Ccomplex%2Ctext&fl=id,结果如:

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 38px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 10px; line-height: 18px; border-left-width: 1px; border-left-style: solid; border-left
    分享到:
    评论

相关推荐

    Solr3.2 + mmseg4j-1.8.4中文搜索引擎_Demo

    在"Solr3.2+mmseg4j-1.8.4中文搜索引擎 demo"项目中,`paoding-analysis.jar`是包含mmseg4j分析器的Java库文件,它提供了与Solr交互的接口,使得Solr能够使用mmseg4j进行中文分词。`readme.txt`通常包含了关于如何...

    solr6配置mmseg4j所需jar包和dic文件

    使用Solr的分析器界面或通过API请求,可以验证mmseg4j是否成功地对中文文本进行了分词。 总的来说,配置mmseg4j在Solr6中的主要目的是提高中文文本的检索效率和准确性。通过合理设置分词规则和字典,可以更好地...

    tomcat+solr3.6+mmseg4j

    通过以上步骤,你将成功地在Tomcat中整合Solr3.6并利用MMSEG4J实现中文分词。这只是一个基础的配置,实际应用中可能需要根据业务需求进行更复杂的定制和优化。例如,为满足实时性要求,可能需要配置实时索引和搜索;...

    mmseg4j-solr-2.2.0-with-mmseg4j-core.zip

    《mmseg4j-solr-2.2.0-with-mmseg4j-core.zip:中文分词在Solr中的应用》 在现代信息检索系统中,中文分词是至关重要的一步,它能有效地将中文文本转化为可处理的词汇单元,为搜索引擎提供精准的索引与查询服务。...

    在tomcat环境下搭建solr和mmseg4j搜索引擎

    本教程将详细阐述如何在Tomcat服务器环境下搭建Solr搜索引擎,并结合mmseg4j分词器进行文本处理,以便实现更精确的中文搜索。以下是你需要了解的关键知识点: 1. **Tomcat服务器**:Tomcat是一个开源的、轻量级的...

    solr3.5与tomcat6集成,添加自己的分词器

    为了支持中文分词,需要将mmseg4j的jar包添加到Solr的类路径中: - `mmseg4j-all-1.8.5.jar` - `mmseg4j-solr-1.8.5.jar` 将这些文件复制到`E:\Solr\server\solr\WEB-INF\lib`目录下。 ##### 步骤8:配置mmseg4j...

    solr搭建搜索

    2. `mmseg4j-solr-2.0.0.jar`: 这是MMSEG4J为Solr定制的版本,使得Solr能直接集成并使用MMSEG4J进行中文分词。在配置Solr时,我们需要将这个JAR包添加到Solr的类路径中,并配置分析器以使用MMSEG4J。 3. `mmseg4j-...

    solr在java中使用总结

    7. **安装分词器mmseg4j:** - 下载并解压mmseg4j(版本1.9.1),将其dist目录下的JAR包拷贝到solr-4.9.0/example/solr/lib中。 - 同时将mmseg4j-core/src/main/resources/data下的三个.dic文件拷贝到solr-4.9.0/...

    solr3.5与tomcat的部署配置以及与java项目的集成

    - **安装mmseg4j**:将`mmseg4j-all-1.8.5.jar`和`mmseg4j-solr-1.8.5.jar`复制到`D:\lucene\solr\server\solr\WEB-INF\lib`。 - **配置分词器**:按照`README.txt`中的说明,在`D:\lucene\solr\home\conf\schema....

    SOLR的应用教程

    包括mmseg4j和paoding两种分词器的配置方法。 2.3 多核(MultiCore)配置 Solr的多核配置允许在一个实例中管理多个独立的搜索应用。 2.4 配置文件说明 主要讨论schema.xml和solrconfig.xml这两个核心配置文件的...

    solr教材-PDF版

    - **2.2.1 mmseg4j**:一种常用的中文分词工具,适用于处理中文文本,提高搜索准确性。 - **2.2.2 paoding**:另一种流行的中文分词工具,同样用于提高中文搜索的质量。 **2.3 多核(MultiCore)配置** - **2.3.1 ...

    solr从入门到精通教程

    - 中文分词配置:包括mmseg4j和paoding两个中文分词器的配置方法。 - 多核(MultiCore)配置:讲解了多核配置的方法及其优势。 3. Solr的应用 - SOLR应用概述:概述了Solr的应用模式和使用过程。 - 一个简单的例子...

    solr 企业搜索引擎教程

    - **mmseg4j**:一种常用的中文分词工具,适用于Solr。 - **paoding**:另一种中文分词工具,支持更复杂的分词逻辑。 #### 9. Solr 的多核配置 - **多核配置方法**:在Solr中创建多个独立的核心(core),每个核心...

    开源企业搜索引擎SOLR的 应用教程

    mmseg4j是一种用于中文分词的工具,可以集成到Solr中。安装步骤如下: 1. 下载mmseg4j插件。 2. 将插件jar包放置在Solr的lib目录下。 3. 在schema.xml中定义使用mmseg4j的Analyzer。 - **2.2.2 paoding** Paoding...

    开源企业搜索引擎SOLR的应用教程.pdf

    中文分词对中文内容的索引和搜索至关重要,因此,介绍了两种常见的分词器:mmseg4j和paoding。此外,文档还对Solr的核心配置文件(如schema.xml和solrconfig.xml)进行了详尽的解释。 文档的第三部分涉及了Solr的...

    开源企业搜索引擎SOLR的应用教程

    - **2.2.1 mmseg4j**:mmseg4j是一种基于最大匹配算法的中文分词库,可以在Solr中使用它来提高中文文本的搜索效果。 - **2.2.2 paoding**:paoding是一款高性能的中文分词工具,同样适用于Solr,支持自定义词典和...

Global site tag (gtag.js) - Google Analytics