Solr 7.3.0 java 操作

一、项目结构


二、pom.xml

<?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.lzm</groupId>
    <artifactId>solr-test</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>

        <dependency>
            <groupId>org.apache.solr</groupId>
            <artifactId>solr-solrj</artifactId>
            <version>5.0.0</version>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.5.6</version>
        </dependency>

        <!--
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>
        -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.16</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.9</version>
            <scope>compile</scope>
        </dependency>

    </dependencies>


</project>

三、Java代码

package com.lzm.solr;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.response.UpdateResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
import org.apache.solr.common.util.NamedList;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;

/**
 * Solr7 操作 solr版本是7.3.0
 * solr-solrj 使用的是5.0.0
 */
public class SolrTest {

    private static final String URL = "http://127.0.0.1:8080/solr7/zhaoyl_core";

    private HttpSolrClient server = null;

    @Before
    public void init() {
        // 创建 server
        server = new HttpSolrClient(URL);
    }

    /**
     * 添加文档
     */
    @Test
    public void addDoc() {

        SolrInputDocument doc = new SolrInputDocument();

        //doc.addField("id", 100);
        doc.addField("content", "solr本分提供了很多分词器(不过对中文的分词实在不能用,愤怒!!!),对了,那么什么是分词呢?比如“数据");
        doc.addField("create_time", "2020-04-27 11:15:37");

        try {

            UpdateResponse response = server.add(doc);
            // 提交
            server.commit();

            System.out.println("########## Query Time :" + response.getQTime());
            System.out.println("########## Elapsed Time :" + response.getElapsedTime());
            System.out.println("########## Status :" + response.getStatus());

        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    /**
     * 查询全部
     */
    @Test
    public void testQuery() {
        String queryStr = "*:*";
        SolrQuery params = new SolrQuery(queryStr);
        params.set("rows", 10);
        try {
            QueryResponse response = null;
            response = server.query(params);
            SolrDocumentList list = response.getResults();
            System.out.println("####### 总共 : " + list.getNumFound() + "条记录");
            for (SolrDocument doc : list) {
                System.out.println("####### id : " + doc.get("id") + "  title : " + doc.get("content")+ "  create_time : " + doc.get("create_time"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 查询
     */
    @Test
    public void testQueryCondition() {
        String queryStr = "评论";
        SolrQuery query = new SolrQuery(queryStr);
        query.set("rows", 10);
        query.setHighlight(true);
        query.addHighlightField("content");// 高亮字段
        //设置高亮的样式
        query.setHighlightSimplePre("<font color='red'>");
        query.setHighlightSimplePost("</font>");
        try {
            QueryResponse response = null;
            response = server.query(query);
            SolrDocumentList list = response.getResults();
            System.out.println("####### 总共 : " + list.getNumFound() + "条记录");
            for (SolrDocument doc : list) {
                System.out.println("####### id : " + doc.get("id") + "  title : " + doc.get("content")+ "  create_time : " + doc.get("create_time"));
            }

            NamedList namedList = (NamedList) response.getResponse().get("highlighting");
            for (int i = 0; i < namedList.size(); i++){
                System.out.println("id=" + namedList.getName(i) + "文档中高亮显示的字段:" + namedList.getVal(i));
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

四、查询结果

####### 总共 : 9条记录
####### id : 31  title : [添加评论]  create_time : [2018-04-16 15:28:29.0]
####### id : 4  title : [测试评论4]  create_time : [2018-04-12 15:17:18.0]
####### id : 32  title : [测试添加,统计评论数]  create_time : [2018-04-17 13:56:38.0]
####### id : 33  title : [测试添加,统计评论数2]  create_time : [2018-04-17 14:00:05.0]
####### id : 34  title : [3DR雪漾盈白保湿乳评论]  create_time : [2018-04-18 11:46:36.0]
####### id : 35  title : [3DR雪漾盈白保湿霜评论]  create_time : [2018-04-18 11:46:43.0]
####### id : 37  title : [3DR雪漾盈白保湿霜评论2]  create_time : [2018-04-18 11:52:07.0]
####### id : 36  title : [3DR雪漾盈白瓷白精华素评论]  create_time : [2018-04-18 11:46:43.0]
####### id : 38  title : [3DR雪漾盈白瓷白精华素评论3]  create_time : [2018-04-18 11:53:09.0]
id=31文档中高亮显示的字段:{content=[添加<font color='red'>评</font><font color='red'>论</font>]}
id=4文档中高亮显示的字段:{content=[测试<font color='red'>评</font><font color='red'>论</font>4]}
id=32文档中高亮显示的字段:{content=[测试添加,统计<font color='red'>评</font><font color='red'>论</font>数]}
id=33文档中高亮显示的字段:{content=[测试添加,统计<font color='red'>评</font><font color='red'>论</font>数2]}
id=34文档中高亮显示的字段:{content=[3DR雪漾盈白保湿乳<font color='red'>评</font><font color='red'>论</font>]}
id=35文档中高亮显示的字段:{content=[3DR雪漾盈白保湿霜<font color='red'>评</font><font color='red'>论</font>]}
id=37文档中高亮显示的字段:{content=[3DR雪漾盈白保湿霜<font color='red'>评</font><font color='red'>论</font>2]}
id=36文档中高亮显示的字段:{content=[3DR雪漾盈白瓷白精华素<font color='red'>评</font><font color='red'>论</font>]}
id=38文档中高亮显示的字段:{content=[3DR雪漾盈白瓷白精华素<font color='red'>评</font><font color='red'>论</font>3]}

猜你喜欢

转载自blog.csdn.net/liangzhiming12/article/details/80107749