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

}
原文地址:https://www.cnblogs.com/honger/p/5903090.html