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;
    }


}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值