zoukankan      html  css  js  c++  java
  • 使用Solrj 获取语句分词结果的代码

    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    import org.apache.log4j.Logger;
    import org.apache.solr.client.solrj.impl.HttpSolrServer;
    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;
    
    import base.util.ConfigUtil;
    
    public class SolrService {
        private static Logger log = Logger.getLogger(SolrService.class);
    
        private static HttpSolrServer solrServer;
    
        static {
            solrServer = new HttpSolrServer(ConfigUtil.getValue("solr.url"));
            solrServer.setConnectionTimeout(5000);
        }
    
        /**
         * 给指定的语句分词。
         * 
         * @param sentence 被分词的语句
         * @return 分词结果
         */
        public static List<String> getAnalysis(String sentence) {
            FieldAnalysisRequest request = new FieldAnalysisRequest(
                    "/analysis/field");
            request.addFieldName("title");// 字段名,随便指定一个支持中文分词的字段
            request.setFieldValue("");// 字段值,可以为空字符串,但是需要显式指定此参数
            request.setQuery(sentence);
    
            FieldAnalysisResponse response = null;
            try {
                response = request.process(solrServer);
            } catch (Exception e) {
                log.error("获取查询语句的分词时遇到错误", e);
            }
    
            List<String> results = new ArrayList<String>();
            Iterator<AnalysisPhase> it = response.getFieldNameAnalysis("title")
                    .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;
        }
    
    }
    
    @Test
    public void getAnalysis() {
        List<String> results = SolrService.getAnalysis("DevNote与大家分享开发实践经验");
        for (String word : results) {
            System.out.println(word);
        }
    }
    
    运行效果:
    devnote
    与
    大家
    分享
    开发
    实践经验
  • 相关阅读:
    使用pickle进行存储变量
    tensorflow的save和restore
    使用tf.print()打印tensor内容
    用python对txt中文件读取,然后按顺序标号存入excel中
    cv2对图像进行旋转和放缩变换
    spring security 允许 iframe 嵌套
    Java+protobuf 实例
    Java处理文件小例子--获取全国所有城市的坐标
    Java 多线程并发 Future+callable 实例
    Java 执行jar linux 实例
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/9675580.html
Copyright © 2011-2022 走看看