惯例先抄一段百度百科。
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过
Http Get操作提出查找请求,并得到XML格式的返回结果;
我个人理解,solr就是luence的网络版。虽然很多资料都说solr不仅仅是luence的网络扩展,不过在我看来,solr就是luence的网络扩展。嗯,有大牛有不同看法,欢迎交流。
再抄一段百科。
mmseg4j用Chih-Hao Tsai 的MMSeg算法实现的中文分词器,并实现lucene的analyzer和solr的TokenizerFactory以方便在Lucene和Solr 中使用。 MMSeg 算法有两种分词方法:Simple和Complex,都是基于正向最大匹配。Complex加了四个规则过虑。官方说:词语的正确识别率达到了 98.41%。mmseg4j已经实现了这两种分词算法。
solr的安装:
(1)版本
jdk1.6.0
tomcat7.0.5
solr1.4.0
luence:solr1.4.0中自带2.9.1的luence。
(2)安装步骤
solr是基于servlet,所以安装solr之前需要先安装servlet容器。这里我们选用了tomcat作为servlet容器。
step1.安装tomcat。这个就不用说了吧。我把tomcat装在D:\tomcat-7.0.5。
step2.安装solr
step1.在D:\tomcat-7.0.5\webapps目录下建立目录solr。将solr下载包中的\solr-1.4.0\example\solr目录下的所有文件(一些配置)全部拷贝进去。
step2.将solr下载包中的apache-solr-1.4.0.war拷贝到D:\tomcat-7.0.5\webapps,并更名为solr.war。
step3.在D:\tomcat-7.0.5\conf\Catalina\localhost目录下建立solr.xml文件。内容为
<Context docBase="D:\tomcat-7.0.5\webapps\solr.war" debug="0" crossContext="true" >
<Environment name="solr/home" type="java.lang.String" value="D:\tomcat-7.0.5\webapps\solr" override="true" />
</Context>
其实step2就是通过Catalina安装servlet项目的过程。step1,建立了solr项目的主目录并将必要的配置文件放入主目录。 step2,将apache-solr-1.4.0.war拷贝出来。apache-solr-1.4.0.war其实是solr的servlet项目的压缩。如图2所示。
而step3建立的配置文件,则是告诉tomcat服务器。solr项目主项目目录在哪,solr项目的servlet压缩文件在哪。
如果想建立多索引的solr,只要在第一步把solr下载包中\solr- 1.4.0\example\muticore目录下的所有目录和文件拷贝过去就好了。当然solr-1.4.0\example\muticore下的配置太过简单。为了实用化的目的,需要参照\solr-1.4.0\example\solr中的配置文件修改core0和core1下的配置。
如果一切顺利,打开tomcat(D:\tomcat-7.0.5\bin\startup.bat)之后,打开浏览器 输入:http://localhost:8080/solr/admin/ (默认是8080,在安装tomcat时可以修改) 就可以访问solr服务了。
MMSeg4J的安装
MMSeg4J官方人提供的安装示例。
http://blog.chenlb.com/2009/04/solr-chinese-segment-mmseg4j-use-demo.html
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,如下:
<fieldTypename="textComplex"class="solr.TextField"positionIncrementGap="100">
<analyzer>
<tokenizerclass="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory"mode="complex"dicPath="dic"/>
<filterclass="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<fieldTypename="textMaxWord"class="solr.TextField"positionIncrementGap="100">
<analyzer>
<tokenizerclass="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory"mode="max-word"dicPath="dic"/>
<filterclass="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<fieldTypename="textSimple"class="solr.TextField"positionIncrementGap="100">
<analyzer>
<tokenizerclass="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory"mode="simple"dicPath="n:/OpenSource/apache-solr-1.3.0/example/solr/my_dic"/>
<filterclass="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
searcher_go_go注释:这段配置表明配置了三个采用MMSeg4J切词的field:分别是textComplex,TextMaxWord 和textSimple。如果对field,tokenizer和filter还不是很熟悉,建议看看solr的官方说明书。
定义几个字段:
<fieldname="simple"type="textSimple"indexed="true"stored="true"/>
<fieldname="complex"type="textComplex"indexed="true"stored="true"/>
<fieldname="text"type="textMaxWord"indexed="true"stored="true"/>
再添加个 copyField(最后面加吧):
<copyFieldsource="text"dest="simple"/>
<copyFieldsource="text"dest="complex"/>
现在 mmseg4j 在 solr 中的使用配置好了。接下来安装 solr 到 tomcat。
启动 tomcat 可以看到 mmseg4j 的相关日志,然后在 http://localhost:8080/solr/admin/analysis.jsp 可以看 mmseg4j 的分词效果。在 Field 的下拉菜单选择 name,然后在应用输入 complex。