一序无、修改 solr-7.3.1\server\solr\articles【創(chuàng)建的core的名稱】\conf\managed-schema文件
1、增加中文的分詞器:
<fieldType name="text_cn" class="solr.TextField" positionIncrementGap="100">
? ? <analyzer type="index">
? ? ? <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
? ? </analyzer>
? ? <analyzer type="query">
? ? ? <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
? ? </analyzer>
? </fieldType>
2、增加字段名烟勋,指定text_cn類型:<field name="cnname" type="text_cn" indexed="true" stored="true" required="true" multiValued="false" />
3启摄、pom引入jiar
<dependency>
? ? ? <groupId>org.springframework.data</groupId>
? ? ? <artifactId>spring-data-solr</artifactId>
? ? </dependency>
二、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分詞組件進(jìn)行分詞
* @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 = "全黨同志一定要登高望遠(yuǎn)实束、居安思危奥秆,勇于變革、勇于創(chuàng)新咸灿,永不僵化构订、永不停滯,團(tuán)結(jié)帶領(lǐng)全國各族人民決勝全面建成小康社會(huì)避矢,奮力奪取新時(shí)代中國特色社會(huì)主義偉大勝利";
? ? ? ? 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();
? ? ? ? //HttpSolrClient solr = null;
? ? ? ? solr = new HttpSolrClient(urlString);
? ? }
? ? /**
? ? * @Author:sks
? ? * @Description:分詞統(tǒng)計(jì)悼瘾,把字符串分詞并返回分詞列表
? ? * @Date:
? ? */
? ? public static List<String> getAnalysis(String sentence) {
? ? ? ? FieldAnalysisRequest request = new FieldAnalysisRequest(
? ? ? ? ? ? ? ? "/analysis/field");
? ? ? ? request.addFieldName("cnname");// 字段名,隨便指定一個(gè)支持中文分詞的字段
? ? ? ? request.setFieldValue("");// 字段值审胸,可以為空字符串亥宿,但是需要顯式指定此參數(shù)
? ? ? ? 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("cnname")
? ? ? ? ? ? ? ? .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;
? ? }
}
執(zhí)行結(jié)果:
全黨
同志
一定
要
登高望遠(yuǎn)
,
居安思危
,
勇于
變革
,
勇于
創(chuàng)新
,
永不
僵化
,
永不
停滯
,
團(tuán)結(jié)
帶領(lǐng)
全國
各族
人民
決勝
全面
建成
小康
社會(huì)
,
奮力
奪取
新
時(shí)代
中國
特色
社會(huì)主義
偉大
勝利