代码如下:
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; } }