SolrJ

SolrJ(java 客户端操作solr)

一、导包(maven配置)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.xushuai.solrj</groupId>
    <artifactId>solrj</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>

        <dependency>
            <groupId>org.apache.solr</groupId>
            <artifactId>solr-solrj</artifactId>
            <version>4.10.4</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.10</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>1.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.2</version>
        </dependency>

    </dependencies>

</project>


二、代码实现

package com.xushuai.solrj;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import javax.management.Query;
import java.io.IOException;

/**
 * solr索引维护
 * Author: xushuai
 * Date: 2018/5/8
 * Time: 16:14
 * Description:
 */
public class SolrJManager {

    private HttpSolrServer solrServer = null;

    /**
     * 准备工作:连接solr服务器
     * @auther: xushuai
     * @date: 2018/5/8 16:34
     */
    @Before
    public void setUp(){
        //默认连接:collection1库
        String solrUrl = "http://localhost:8080/solr";
        solrServer = new HttpSolrServer(solrUrl);
    }

    /**
     * 提交
     * @auther: xushuai
     * @date: 2018/5/8 16:35
     * @throws: IOException, SolrServerException
     */
    @After
    public void tearDown() throws IOException, SolrServerException {
        solrServer.commit();
    }
    
    /**
     * 新增、修改
     * @auther: xushuai
     * @date: 2018/5/8 16:14
     * @throws: IOException, SolrServerException
     */
    @Test
    public void solrAdd() throws IOException, SolrServerException {
        //创建文档对象
        SolrInputDocument doc = new SolrInputDocument();
        //solr必须手动设置文档id,否则会出错
        doc.setField("id","9528");
        doc.setField("name","xushuai");

        //调用server保存
        /*
         * 如果doc对象的id在库中已存在,那么就执行更新操作
         * 如果不存在,就执行新增操作
         */
        solrServer.add(doc);
    }

    /**
     * 删除
     * @auther: xushuai
     * @date: 2018/5/8 16:38
     * @throws: IOException, SolrServerException
     */
    public void solrDelete() throws IOException, SolrServerException {
        /*
         * 删除方法介绍(总体为两类):
         *      1、deleteById(id),删除指定id索引。有重载方法,可以指定多个id值
         *      2、deleteByQuery(query),按指定条件删除
         */
        // *:*:删除全部
        // id:9528:删除id为9528的索引
        solrServer.deleteByQuery("id:9528");
    }

    /**
     * 查询
     * @auther: xushuai
     * @date: 2018/5/8 16:44
     * @throws: SolrServerException
     */
    @Test
    public void solrSearch() throws SolrServerException {
        //查询条件对象
        SolrQuery query = new SolrQuery();
        //设置查询条件
        query.set("q","product_name:台灯");
        //设置查询过滤规则
        query.set("fq","product_catalog_name:雅致灯饰");
        //设置排序规则
        query.addSort("product_price", SolrQuery.ORDER.asc);

        //获取查询结果
        QueryResponse response = solrServer.query(query);
        SolrDocumentList results = response.getResults();
        //遍历结果集打印到控制台
        for (SolrDocument document: results) {
            System.out.println(document.get("id"));
            System.out.println(document.get("product_name"));
            System.out.println(document.get("product_catalog_name"));
            System.out.println(document.get("product_price"));
            System.out.println("----------------------------------");
        }

    }
}

猜你喜欢

转载自blog.csdn.net/qq1031893936/article/details/80243298