importjava.io.IOException;import java.util.*;importorg.apache.solr.client.solrj.SolrClient;importorg.apache.solr.client.solrj.SolrQuery;importorg.apache.solr.client.solrj.SolrRequest;importorg.apache.solr.client.solrj.SolrServerException;importorg.apache.solr.client.solrj.impl.HttpSolrClient;importorg.apache.solr.client.solrj.response.QueryResponse;importorg.apache.solr.client.solrj.response.UpdateResponse;importorg.apache.solr.common.SolrDocument;importorg.apache.solr.common.SolrInputDocument;importjava.util.Set;importjava.util.List;importjava.util.Map.Entry;importorg.apache.solr.client.solrj.request.FieldAnalysisRequest;importorg.apache.solr.client.solrj.response.AnalysisResponseBase.AnalysisPhase;importorg.apache.solr.client.solrj.response.AnalysisResponseBase.TokenInfo;importorg.apache.solr.client.solrj.response.FieldAnalysisResponse;/*** @Author:sks
* @Description:利用solr分词组件进行分词
* @Date:Created in 14:07 2017/12/14
* @Modified by:
**/
public classsplitwords {public static void main(String []args) throwsSolrServerException, IOException{
String urlString= "http://localhost:8983/solr/data";
Init(urlString);
String txt= "全党同志一定要登高望远、居安思危,勇于变革、勇于创新,永不僵化、永不停滞,团结带领全国各族人民决胜全面建成小康社会,奋力夺取新时代中国特色社会主义伟大胜利";
List results =getAnalysis(txt);for(String word :results){
System.out.println(word);
}//全党//同志//一定//要//登高望远//居安思危//勇于//变革//勇于//创新//永不//僵化//永不//停滞//团结//带领//全国各族人民//决胜//全面//建成//小康社会//奋力//夺取//新时代//中国特色//社会主义//伟大//胜利
}private staticSolrClient solr;/*** @Author:sks
* @Description:初始化solr客户端
* @Date:*/
public static voidInit(String urlString){
solr= newHttpSolrClient.Builder(urlString).build();
}/*** @Author:sks
* @Description:分词统计,把字符串分词并返回分词列表
* @Date:*/
public static ListgetAnalysis(String sentence) {
FieldAnalysisRequest request= newFieldAnalysisRequest("/analysis/field");
request.addFieldName("text");//字段名,随便指定一个支持中文分词的字段
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("text")
.getQueryPhases().iterator();while(it.hasNext()) {
AnalysisPhase pharse=(AnalysisPhase)it.next();
List list =pharse.getTokens();for(TokenInfo info : list) {
results.add(info.getText());
}
}returnresults;
}
}