我与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;
    }

}
时间: 2024-10-12 16:07:44

我与solr(四)--solrJ的相关文章

org.apache.solr.client.solrj.impl.HttpSolrServer$RemoteSolrException: Internal Server Error 错误

Solr报错: { "responseHeader": { "status": 500, "QTime": 11 }, "error": { "trace": "java.lang.RuntimeException\r\n\tat org.apache.solr.search.ExtendedDismaxQParser$ExtendedDismaxConfiguration.<init>

搜索引擎系列十:Solr(solrj 、索引API 、 结构化数据导入)

一.SolrJ介绍 1. SolrJ是什么? Solr提供的用于JAVA应用中访问solr服务API的客户端jar.在我们的应用中引入solrj: <dependency> <groupId>org.apache.solr</groupId> <artifactId>solr-solrj</artifactId> <version>7.3.0</version> </dependency> 2. SolrJ的核

Solr(四)Solr实现简单的类似百度搜索高亮功能-1.配置Ik分词器

配置Ik分词器 一 效果图 二 实现此功能需要添加分词器,在这里使用比较主流的IK分词器. 1 没有配置IK分词器,用solr自带的text分词它会把一句话分成单个的字. 2 配置IK分词器,的话它会把句子分成词组 三 下载配置分词器 1 下载分词器IK 分词器下载地址: http://download.csdn.net/detail/u013292160/9926148 2 解压下载的文件 3 将ik-analyzer-solr5-5.x.jar这个jar包放入solr项目下的WEB-INF\

solr(四): centos中, 整合 tomcat

前言 虽然windows下, tomcat和solr整合起来灰常的方便, 但是, 一般像这种东西, 都很少部署在windows中, 更多的是部署到linux中去. 其实, 步骤是一样的, 这里, 我在centos 中再部署一次. 下包 下载地址还是之前的那个: http://mirror.bit.edu.cn/apache/lucene/solr/ 下载下来之后, 放到centos中的 /home/elvin/Downloads 文件下. elvin 是我的用户名. 为了与第一篇对应, 我按照第

Solr JAVA客户端SolrJ 4.9使用示例教程

摘要 SolrJ是操作Solr的JAVA客户端,它提供了增加.修改.删除.查询solr索引的JAVA接口.SolrJ针对Solr提供了Rest 的HTTP接口进行了封装,SolrJ底层是通过使用httpClient中的方法来完成Solr的操作. SolrJ Solr POJOs 客户端 目录[-] 简介 SolrJ/Solr 跨版本兼容性 示例代码 参考 简介 SolrJ是操作Solr的JAVA客户端,它提供了增加.修改.删除.查询Solr索引的JAVA接口.SolrJ针对Solr提供了Rest

solr 的客户端调用solrj 建索引+分页查询

一.利用SolrJ操作solr API 使用SolrJ操作Solr会比利用httpClient来操作Solr要简单.SolrJ是封装了httpClient方法,来操作solr的API的.SolrJ底层还是通过使用httpClient中的方法来完成Solr的操作. 需要的包如下: 1. apache-solr-solrj-3.5.0.jar 2. commons-httpclient-3.1.jar 3.slf4j-api-1.6.0.jar 4.commons-logging-1.1.jar 在

使用solrj操作solr索引库

(solrj)初次使用solr的开发人员总是很郁闷,不知道如何去操作solr索引库,以为只能用<五分钟solr4.5教程(搭建.运行)>中讲到的用xml文件的形式提交数据到索引库,其实没有那么麻烦,solr配套有好多的客户端用于操作索引库,下面我们来讲如何用solrj去操作solr索引库. 一.认识solrj solrj是solr的java客户端,用于访问solr索引库.它提供了添加.删除.查询.优化等功能. 二.下载 百度.google以下solrj下载,你会发现根本就没有,那么我们该到哪儿

JAVAEE——Solr:安装及配置、后台管理索引库、 使用SolrJ管理索引库、仿京东的电商搜索案例实现

1 学习回顾 1. Lucene  是Apache开源的全文检索的工具包 创建索引 查询索引 2. 遇到问题? 文件名 及文件内容  顺序扫描法  全文检索 3. 什么是全文检索? 这种先创建索引 再对索引进行搜索的过程叫全文检索 4. 索引是什么? 非结构数据中提取一个数据.并重新组合的过程叫索引 5. Lucene实现 6. 入门程序 磁盘文件为原始文件 创建索引 第一步:获取文件 第二步:创建文档对象 第三步:创建分析器 第四步:保存索引及文档到索引库 搜索索引 第一步:用户接口(百度)

Apache Solr 之 使用SolrJ操作索引库

Solrj是Solr搜索服务器的一个比较基础的客户端工具,可以非常方便地与Solr搜索服务器进行交互.最基本的功能就是管理Solr索引,包括添加.更新.删除和查询等.对于一些比较基础的应用,用Solj基本够用,而且你可以非常容易地通过使用Solrj的API实现与Solr搜索服务器进行交互,实现对Solr的基本管理功能.如果你的应用比较复杂,可以扩展Solrj来满足需要. 使用 SolrJ操作索引库: package com.hcm.solr.test; import java.io.IOExce