zoukankan      html  css  js  c++  java
  • 我与solr(四)--solrJ

    SolrJ索引库:

    solr提供的一个客户端操作框架,在文件/solr6.2/dist下面可以找到该jar包solrj.jar以及相关jar包,可以使用maven添加。

    java使用solrJ如下:

    @Service
    public class IntelligenceWordSolrDAOImpl implements IntelligenceWordSolrDAO {
    
        private static final String URL = Config.getString("config.solr.url.mycore");
    
        /**
         * 获取solrService对象
         *
         * @return
         */
        private SolrClient getSolrService() {
    
            String urlString = "http://192.168.1.12:8080/solr/mycore";
            SolrClient solr = new HttpSolrClient.Builder(urlString).build();
    
            return solr;
        }
    
        /**
         * 在搜索器引擎中创建索引
         *
         * @param intelligenceList
         */
        public void add(List<Intelligence> intelligenceList) throws Exception {
    
            SolrClient solr = getSolrService();
    
            List<SolrInputDocument> SolrInputDocumentList = Lists.newArrayList();
            intelligenceList.forEach(intelligence -> SolrInputDocumentList.add(initProperty(intelligence)));
    
            solr.add(SolrInputDocumentList);
            solr.commit();
        }
    
        /**
         * 查询数据
         *
         * @param param 匹配的参数集合
         * @return 文档的数量
         * @throws Exception
         */
        public Long query(String[] param, Integer limit) throws Exception {
    
            Integer branchId = LoginContext.getBranchId();
            SolrClient solr = getSolrService();
            SolrQuery query = new SolrQuery();
    
            StringBuffer buffer = new StringBuffer();
            for (int i = 0; i < param.length; i++) {
                if (i + 1 == param.length) {
                    buffer.append(""" + param[i] + """);
                } else {
                    buffer.append(""" + param[i] + """ + " OR ");
                }
            }
    
            //根据时间限制设置选定条件
            DateTime dateTime = new DateTime();
            dateTime.minusDays(limit);
            Date queryTime = dateTime.toDate();
    
            String queryStr = "text:(" + buffer.toString() + ")";
            query.add(queryStr);
    
            //时间限定
            String limitStr = "collectTime:[" + queryTime + " TO *]";
            String branchStr = "branchId:("+branchId+")";
            query.add(limitStr);
            query.add(branchStr);
    
            // String allQuery = queryStr+" AND "+limitStr+" AND "+branchStr;
    
            //query.setQuery(allQuery);
    
            QueryResponse response = solr.query(query);
    
            //获取返回的数据
            SolrDocumentList solrDocumentList = response.getResults();
            return solrDocumentList.getNumFound();
        }
    
        /**
         * 初始化
         *
         * @param param
         * @return
         */
        public SolrInputDocument initProperty(Intelligence param) {
    
            Assert.notNull(param, "param not be null");
            SolrInputDocument document = new SolrInputDocument();
            document.addField("id", param.getIntelligenceId());
            document.addField("intelligenceId", param.getIntelligenceId());
            document.addField("title", param.getTitle());
            document.addField("content", param.getContent());
            document.addField("collectTime", param.getCollectTime().getTime());
            document.addField("branchId", param.getBranchId());
    
            return document;
        }
    
    }
  • 相关阅读:
    XML炸弹
    IP分片攻击——就是发送部分分片报文,让对方一直等待从而耗对方内存的DoS攻击
    灰色软件——广告软件,拨号软件,远程访问软件等
    rootkit——一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,一般都和木马、后门等其他恶意程序结合使用
    漏洞利用 Exploit---利用默认口令、IP假冒、应用漏洞
    SequenceFile文件
    随机森林和GBDT的几个核心问题
    机器学习中的算法(1)-决策树模型组合之随机森林与GBDT
    直方图中最大矩形面积
    openMP多线程编程
  • 原文地址:https://www.cnblogs.com/DASOU/p/5904572.html
Copyright © 2011-2022 走看看