solr配置分詞器


一、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  copyTomcat

 

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("------------------------------------");
        }
    }
    

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM