Java solr 分词

  代码如下:

import java.io.IOException;
import java.util.*;

import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrInputDocument;
import java.util.Set;
import java.util.List;
import java.util.Map.Entry;
import org.apache.solr.client.solrj.request.FieldAnalysisRequest;
import org.apache.solr.client.solrj.response.AnalysisResponseBase.AnalysisPhase;
import org.apache.solr.client.solrj.response.AnalysisResponseBase.TokenInfo;
import org.apache.solr.client.solrj.response.FieldAnalysisResponse;
/**
 * @Author:sks
 * @Description:利用solr分词组件进行分词
 * @Date:Created in 14:07 2017/12/14
 * @Modified by:
 **/
public class splitwords {
    public static void main(String []args) throws SolrServerException, IOException{

        String urlString = "http://localhost:8983/solr/data";
        Init(urlString);
        String txt = "全党同志一定要登高望远、居安思危,勇于变革、勇于创新,永不僵化、永不停滞,团结带领全国各族人民决胜全面建成小康社会,奋力夺取新时代中国特色社会主义伟大胜利";
        List<String> results = getAnalysis(txt);
        for(String word :results){
            System.out.println(word);
        }

//        全党
//        同志
//        一定
////        登高望远
//        居安思危
//        勇于
//        变革
//        勇于
//        创新
//        永不
//        僵化
//        永不
//        停滞
//        团结
//        带领
//        全国各族人民
//        决胜
//        全面
//        建成
//        小康社会
//        奋力
//        夺取
//        新时代
//        中国特色
//        社会主义
//        伟大
//        胜利


    }

    private static SolrClient solr;
    /**
     * @Author:sks
     * @Description:初始化solr客户端
     * @Date:
     */
    public static void Init(String urlString){

        solr = new HttpSolrClient.Builder(urlString).build();
    }
    /**
     * @Author:sks
     * @Description:分词统计,把字符串分词并返回分词列表
     * @Date:
     */
    public static List<String> getAnalysis(String sentence) {
        FieldAnalysisRequest request = new FieldAnalysisRequest(
                "/analysis/field");
        request.addFieldName("text");// 字段名,随便指定一个支持中文分词的字段
        request.setFieldValue("");// 字段值,可以为空字符串,但是需要显式指定此参数
        request.setQuery(sentence);

        FieldAnalysisResponse response = null;
        try {
            response = request.process(solr);
        } catch (Exception e) {
            e.printStackTrace();
        }

        List<String> results = new ArrayList<String>();
        Iterator<AnalysisPhase> it = response.getFieldNameAnalysis("text")
                .getQueryPhases().iterator();
        while(it.hasNext()) {
            AnalysisPhase pharse = (AnalysisPhase)it.next();
            List<TokenInfo> list = pharse.getTokens();
            for (TokenInfo info : list) {
                results.add(info.getText());
            }

        }

        return results;
    }


}
原文地址:https://www.cnblogs.com/shaosks/p/8037465.html