这二天一直在研究全文搜索,想放到自己的一个网站上做应用;再经过对比之后,选择了同为JAVA的基于lucene的solr+mmseg4j中文分词器;
首先:上网下载一个最新的Solr:http://lucene.apache.org/solr/
安装Solr, 下载下来直接解压,然后进入apache-solr-1.4.0/example下面,直接运行:
java -jar start.jar
然后查看http://localhost:8983/solr/,看到欢迎界面,一切ok。
(在这里,我将apache-solr-1.4.0放置于我的django项目根目录,与settings.py目录平级)
第二步:上网下载最新的mmseg4j:http://code.google.com/p/mmseg4j/downloads/list (现在最新的是1.8.2)
(solr.home == apache-solr-1.4.0/example/solr/)
把 mmseg4j-all-1.8.2.jar 放到 solr.home/lib下,届时solr服务器启动时会自动加载;
在solr.home下新建一个dic文件夹(如没有),里面放置您的字典文件(*.dic),chars.dic 同words.dic 是一定要有的;
第三步:更新solr.home/conf/schema.xml文件;
1:add fieldType;
<fieldType name="textComplex" class="solr.TextField" positionIncrementGap="100" > <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="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="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="dic"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType>
2:add field
<field name="simple" type="textSimple" indexed="true" stored="true"/> <field name="complex" type="textComplex" indexed="true" stored="true"/> <field name="text" type="textMaxWord" indexed="true" stored="true"/>
*(在这里,因为原文件已存在text字段,所以将原先的text字段删除即可;也可以修改您的text名称,不过我没有试)
3:add copyfield
<copyField source="text" dest="simple" /> <copyField source="text" dest="complex" />
这样schema文件就修改好了;
*(记住这个时候一定要重启一下solr服务才能生效,尤其是你将要生成索引的时候)
主要参考:http://blog.chenlb.com/2009/04/solr-chinese-segment-mmseg4j-use-demo.html
http://fzuslideblog.appspot.com/2010/03/25/django_solr_search.html