Zotonic 有一个mod提供全文搜索功能: mod_search_solr , 需要另行下载: http://modules.zotonic.com/page/323/mod-search-solr
如果需要支持中文分词的全文搜索,需要把中文分词器整合到solr里面。这里选用 mmseg4j 作为中文分词器。
另外,mod_search_solr只支持对zotonic的rsc表进行全文搜索。如果想对其他表或者多表搜索,需要自己改造代码。
1. 下载mod_search_solr, 放到zotonic目录 user/modules 下
2. 启动zotonic。 一切正常的话,在浏览器打开 http://127.0.0.1:8983/solr/ 可以看到 solr 的web控制面板。在Dashboard的version里可以查看当前solr的版本。
如果出现错误,可以在 mod_search_solr/priv/logs里面查看log。
3. 下载mmseg4j。mmseg4j有好多版本,而且跟solr各个版本的兼容性都比较苛刻。根据你在solr Dashboard里面看到的solr版本,选用mmseg4j.(各个版本的mmseg4j对solr的支持都会写在README文件)。
我用的solr是4.0。与他兼容的有mmseg4j 的1.9.0版本。但是有严重bug: http://code.google.com/p/mmseg4j/issues/detail?id=38
所以去这里下载新版,经测试没有问题:
http://mmseg4j.googlecode.com/files/mmseg4j-1.9.1.v20130120-SNAPSHOT.zip 解决了 lucene 4.0 的分词接口问题。
你需要三个jar包,分别是: mmseg4j-analysis-1.9.1-SNAPSHOT.jar mmseg4j-core-1.9.1-SNAPSHOT.jar mmseg4j-solr-1.9.1-SNAPSHOT.jar; 另外还需要任意版本的中文词库, mmseg4j的中文词库是一个data文件夹 ,里面有这几个文件
chars.dic units.dic words.dic words-my.dic
4. 把3个jar包放到mod_search_solr/priv/solr/solr-webapp/webapp/WEB-INF/lib下
5. 把词库文件(*.dic) 放到mod_search_solr/priv/cores/你自己的core/data下
6. 修改mod_search_solr/priv/cores/你自己的core/conf/schema.xml文件
在types标签内添加这段:
<fieldType name="textComplex" class="solr.TextField" > <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" /> </analyzer> </fieldType> <fieldType name="textMaxWord" class="solr.TextField" > <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" /> </analyzer> </fieldType> <fieldType name="textSimple" class="solr.TextField" > <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" /> </analyzer> </fieldType>
表示为solr添加mmseg4j的3种fieldType: textComplex, textMaxWord, textSimple. 三种type对中文匹配的精确度不同,具体查google。
然后在你需要做中文索引的field上用mmseg4j的type:
<field name="title" type="textComplex" indexed="true" stored="true" omitNorms="true" />
7. Done 。
浙公网安备 33010602011771号