java调用solr的分词查询结果

一、修改 solr-7.3.1\server\solr\articles【创建的core的名称】\conf\managed-schema文件

1、增加中文的分词器:

   

     

   

   

     

   

 

2、增加字段名,指定text_cn类型:

3、pom引入jiar

      org.springframework.data

      spring-data-solr

   

二、java代码如下:


package com.silverbox.solr;

import java.io.IOException;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

import org.apache.solr.client.solrj.SolrClient;

import org.apache.solr.client.solrj.SolrServerException;

import org.apache.solr.client.solrj.impl.HttpSolrClient;

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:6789/solr/mote";

        Init(urlString);

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

        List 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();


        //HttpSolrClient solr = null;

        solr = new HttpSolrClient(urlString);


    }

    /**

    * @Author:sks

    * @Description:分词统计,把字符串分词并返回分词列表

    * @Date:

    */

    public static List getAnalysis(String sentence) {

        FieldAnalysisRequest request = new FieldAnalysisRequest(

                "/analysis/field");

        request.addFieldName("cnname");// 字段名,随便指定一个支持中文分词的字段

        request.setFieldValue("");// 字段值,可以为空字符串,但是需要显式指定此参数

        request.setQuery(sentence);

        FieldAnalysisResponse response = null;

        try {

            response = request.process(solr);

        } catch (Exception e) {

            e.printStackTrace();

        }

        List results = new ArrayList();

        Iterator it = response.getFieldNameAnalysis("cnname")

                .getQueryPhases().iterator();

        while(it.hasNext()) {

            AnalysisPhase pharse = (AnalysisPhase)it.next();

            List list = pharse.getTokens();

            for (TokenInfo info : list) {

                results.add(info.getText());

            }

        }

        return results;

    }

}


执行结果:

全党

同志

一定

登高望远

,

居安思危

,

勇于

变革

,

勇于

创新

,

永不

僵化

,

永不

停滞

,

团结

带领

全国

各族

人民

决胜

全面

建成

小康

社会

,

奋力

夺取

时代

中国

特色

社会主义

伟大

胜利

你可能感兴趣的:(java调用solr的分词查询结果)