Solr索引库的使用SolrJ

35 篇文章 0 订阅
3 篇文章 0 订阅

0、添加依赖

		<!-- solr客户端 -->
		<dependency>
			<groupId>org.apache.solr</groupId>
			<artifactId>solr-solrj</artifactId>
		</dependency>

一、配置文件:applicationContext-solr.xml 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
	http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
	http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
	http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd">
	<bean id="httpSolrServer" class="org.apache.solr.client.solrj.impl.HttpSolrServer">
		<constructor-arg name="baseURL" value="${SOLR_URL}"/>
		<!-- <constructor-arg name="baseURL" value="http://192.168.25.130:8080/solr/collection1"/> -->
	</bean>
</beans>

二、使用

package com.e3mall.solrj;

import java.util.List;
import java.util.Map;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServer;
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.Test;

public class TestSolrJ {
    /**
     * 
     * @Description: 增改Solr文档
     * @author WSC 
     * @date 2019年9月23日  
     * @throws Exception
     * void
     */
    @Test
    public void addDocument() throws Exception {// 添加和更新文档
        // 创建一个SolrServer对象,创建一个连接。参数solr服务的url
        SolrServer solrServer = new HttpSolrServer("http://192.168.25.130:8080/solr/collection1");
        // 创建一个文档对象SolrInputDocument
        SolrInputDocument doc = new SolrInputDocument();
        // 向文档对象中添加域。文档中必须包含一个id域,所有域的名称必须在schema.xml中定义
        doc.addField("id", "doc1");
        doc.addField("item_title", "测试商品02");
        doc.addField("item_price", 1002);
        // 把文档写入索引库
        solrServer.add(doc);
        // 提交
        solrServer.commit();
    }

    /**
     * 
     * @Description: 删除Solr文档
     * @author WSC 
     * @date 2019年9月23日  
     * @throws Exception
     * void
     */
    @Test
    public void deleteDocument() throws Exception {// 删除文档
        SolrServer httpSolrServer = new HttpSolrServer("http://192.168.25.130:8080/solr/collection1");
        // 删除文档
        // httpSolrServer.deleteById("doc1");
        httpSolrServer.deleteByQuery("id:doc1");
        // 提交
        httpSolrServer.commit();
    }

    /**
     * 
     * @Description: 简单查询Solr文档
     * @author WSC 
     * @date 2019年9月23日  
     * @throws Exception
     * void
     */
    @Test
    public void queryIndex() throws Exception {
        // 创建索引库对象
        SolrServer solrServer = new HttpSolrServer("http://192.168.25.130:8080/solr/collection1");
        // 创建一个SolrQuery对象
        SolrQuery solrQuery = new SolrQuery();
        // 设置查询条件
        // solrQuery.setQuery("*:*");
        solrQuery.set("q", "*:*");
        // 执行查询,SolrResponse对象
        QueryResponse queryResponse = solrServer.query(solrQuery);
        // 取文档列表。去查询结果的总记录数
        SolrDocumentList documentList = queryResponse.getResults();
        System.out.println("获取查询结果的总记录数:" + documentList.getNumFound());
        // 遍历文档列表,区域中的内容
        for (SolrDocument solrDocument : documentList) {
            System.out.println(solrDocument.get("id"));
            System.out.println(solrDocument.get("item_title"));
            System.out.println(solrDocument.get("item_sell_point"));
            System.out.println(solrDocument.get("item_price"));
            System.out.println(solrDocument.get("item_image"));
            System.out.println(solrDocument.get("item_category_name"));
            System.out.println("---------------------------------------------");
        }
    }

    /**
     * 
     * @Description: 复杂查询Solr文档
     * @author WSC 
     * @date 2019年9月23日  
     * @throws Exception
     * void
     */
    @Test
    public void queryIndexFuZa() throws Exception {
        // 创建索引库对象
        SolrServer solrServer = new HttpSolrServer("http://192.168.25.130:8080/solr/collection1");
        // 创建一个SolrQuery对象
        SolrQuery solrQuery = new SolrQuery();
        // 设置查询条件
        solrQuery.setQuery("手机");
        solrQuery.setStart(0);
        solrQuery.setRows(20);
        solrQuery.set("df", "item_title");
        solrQuery.setHighlight(true);
        solrQuery.addHighlightField("item_title");
        solrQuery.setHighlightSimplePre("<em>");
        solrQuery.setHighlightSimplePost("</em>");
        // 执行查询,SolrResponse对象
        QueryResponse queryResponse = solrServer.query(solrQuery);
        // 取文档列表。去查询结果的总记录数
        SolrDocumentList documentList = queryResponse.getResults();
        System.out.println("获取查询结果的总记录数:" + documentList.getNumFound());
        // 遍历文档列表,区域中的内容
        for (SolrDocument solrDocument : documentList) {
            System.out.println(solrDocument.get("id"));
            // 取高亮显示
            Map<String, Map<String, List<String>>> highlighting = queryResponse.getHighlighting();
            List<String> list = highlighting.get(solrDocument.get("id")).get("item_title");
            String title;
            if (list != null && list.size() > 0) {
                title = list.get(0);
            } else {
                title = solrDocument.get("item_title").toString();
            }
            System.out.println(title);
            System.out.println(solrDocument.get("item_sell_point"));
            System.out.println(solrDocument.get("item_price"));
            System.out.println(solrDocument.get("item_image"));
            System.out.println(solrDocument.get("item_category_name"));
            System.out.println("---------------------------------------------");
        }
    }

}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值