一、solr4.10 + mmseg4j-2.2.0分詞器
1、solr的安裝部署:http://www.cnblogs.com/honger/p/5876289.html,注意不同的版本安裝方式可能不同。
solr與mmseg4j對應的版本,不要弄錯,否則會出錯。
- mmseg4j-solr-2.0.0.jar 要求 lucene/solr >= 4.3.0。在 lucene/solr [4.3.0, 4.7.1] 測試過兼容可用。
- mmseg4j-solr-2.1.0.jar 要求 lucene/solr 4.8.x
- mmseg4j-solr-2.2.0.jar 要求 lucene/solr [4.9, 4.10.x]
- mmseg4j-solr-2.3.0.jar 要求 lucene/solr [5.0, ]
地址:https://github.com/chenlb/mmseg4j-solr,往下拉找到下載,點擊即可
2、下載好后,解壓,將解壓出來的兩個jar包使用拷貝到tomcat的solr工程的lib下面,將mmseg4j-core-1.10.0.jar里的data文件夾里的以*.dic結尾的文件拷貝到solrhome的dic文件夾下,這個dic文件夾是自己創建的。
3、修改solrhome/collection2/conf/schma.xml,添加以下代碼(collection2是你創建的core對象,以你自己創建的為准,代碼中dicPath這個屬性指的是你的dic文件目錄,這里使用的是相對路徑,相對於solrhome)
<fieldtype name="textComplex" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="dic"/> </analyzer> </fieldtype> <fieldtype name="textMaxWord" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="max-word" /> </analyzer> </fieldtype> <fieldtype name="textSimple" class="solr.TextField" positionIncrementGap="100"> <analyzer> <tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="simple" dicPath="dic" /> </analyzer> </fieldtype>
4、啟動tomcat
二、第二種方式solr-4.10.0 + IKAnalyzer分詞器
IKAnalyzer分詞器目前只能支持到solr5以下,以上的已經不支持了
1、IKAnalyzer分詞器的下載:http://pan.baidu.com/s/1cBUw5g
2、IKAnalyzer解壓后的目錄結構,將其中的jar包拷貝到solr/WEB-INF/lib下,再將
IKAnalyzer.cfg.xml、ext_stopword.dic mydict.dic copy到 Tomcat的
webapps/solr/WEB-INF/classes下
3、修改你想要增加字段域的那個core下的schema.xml,我的是collection1添加以下代碼
<fieldType name="text_ik" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType> <field name="item_title" type="text_ik" indexed="true" stored="true"/>
4、啟動tomcat
solrjTest.java參考文檔地址:http://mirrors.cnnic.cn/apache/lucene/solr/ref-guide/apache-solr-ref-guide-6.2.pdf,可用ctrl+s將它下載下來。
import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrQuery; import org.apache.solr.client.solrj.impl.HttpSolrClient; import org.apache.solr.client.solrj.response.QueryResponse; import org.apache.solr.common.SolrDocument; import org.apache.solr.common.SolrDocumentList; import org.apache.solr.common.SolrInputDocument; import org.junit.Test; public class SolrTest { @Test public void create() throws Exception { String urlString = "http://192.168.243.128:8080/solr"; SolrClient solr = new HttpSolrClient.Builder(urlString).build(); //集群 /*String zkHostString = "zkServerA:2181,zkServerB:2181,zkServerC:2181/solr"; SolrClient solr = new CloudSolrClient.Builder().withZkHost(zkHostString).build();*/ SolrInputDocument document = new SolrInputDocument(); document.addField("id", "552199"); document.addField("name", "Gouda cheese wheel"); document.addField("price", "49.99"); solr.add(document); // Remember to commit your changes! solr.commit(); } @Test public void delete() throws Exception { String urlString = "http://192.168.243.128:8080/solr"; SolrClient solr = new HttpSolrClient.Builder(urlString).build(); solr.deleteById("552199"); solr.deleteByQuery("id:100"); solr.commit(); } @Test public void query() throws Exception { String urlString = "http://192.168.243.128:8080/solr"; SolrClient solr = new HttpSolrClient.Builder(urlString).build(); SolrQuery query = new SolrQuery(); query.setQuery("*:*"); query.setStart(20); query.setRows(50); //增加高亮域 query.setHighlight(true); query.addHighlightField("item_title"); query.setHighlightSimplePre("<em style=\"color:red\">"); query.setHighlightSimplePost("</em>"); query.addHighlightField("item_title"); QueryResponse queryResponse = solr.query(query); SolrDocumentList solrDocumentList = queryResponse.getResults(); for (SolrDocument solrDocument : solrDocumentList) { System.out.println("------------------------------------"); System.out.println(solrDocument.get("id")); System.out.println(solrDocument.get("item_title")); System.out.println(solrDocument.get("item_category_name")); System.out.println(solrDocument.get("item_sell_point")); System.out.println(solrDocument.get("item_price")); System.out.println("------------------------------------"); } } }