solr搜索引擎整合java代码

Solr采用Lucene搜索库为核心,提供全文索引和搜索开源企业平台,提供REST的HTTP/XML和JSON的API!本教程以solr5.2.1作为测试环境,jdk版本需要1.8和tomcat8。


准备:本文需要下载solr,下载地址http://archive.apache.org/dist/lucene/solr/5.2.1/,并且提供了window版本和linux版本



1、solr压缩包并解压; 

2、将 solr 压缩包中 solr-5.2.1\server\webapps\文件夹下有个solr.war,将之复制到Tomcat\webapps\目录下,执行tomcat; 


3、将 solr 压缩包中 solr-5.2.1\server\lib\ext 中的 jar 全部复制到 Tomcat\ webapps\solr\WEB-INF\lib 目录中; 


4、将 solr 压缩包中 solr-5.2.1 server/resources /log4j.properties 复制到Tomcat\ webapps\solr\WEB-INF\lib 目录中; 


5、将 solr 压缩包中 solr-5.2.1/server/solr 目录复制到计算机某个目录下,如D:\testsolr\solr_home(solr创建的core到时会存放在该目录下); 


6、打开Tomcat/webapps/solr/WEB-INF下的web.xml,找到如下配置内容(初始状态下该内容是被注释掉的):
    <env-entry>
       <env-entry-name>solr/home</env-entry-name>
       <env-entry-value>D:\programe\apache-tomcat-8.5.29\webapps\solr\solr-home</env-entry-value>
       <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>

7、启动tomcat:访问http://localhost:7070/solr/ (我的tomcat端口)



8、java代码:

package com.chinaexpresscard.picc.base.controller;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;

import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrQuery.ORDER;
import org.apache.solr.client.solrj.SolrServerException;
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.junit.Before;
import org.junit.Test;


public class SolrTest {
    
    private static final String URL = "http://127.0.0.1:7070/solr/db";
    
    private HttpSolrClient server = null;
     
    @Before
    public void init() {
        // 创建 server
        server = new HttpSolrClient(URL);
    }
    
    //@Test
    public void addDoc() {
 
    	Collection<SolrInputDocument> docs = new ArrayList<SolrInputDocument>();
    	
        SolrInputDocument doc = new SolrInputDocument();
 /*
        doc.addField("id", 3);
        doc.addField("name", "Solr Input Documents 1");
        doc.addField("manu", "this is SolrInputDocuments 1 content");
        
        docs.add(doc);*/
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
        
        for (int i = 0; i < 15; i++) {
			
        	doc = new SolrInputDocument();
        	doc.addField("id", (i+1));
        	doc.addField("incubationdate_dt", new Date());
        	doc.addField("name", "Solr Input Documents "+(i+1));
        	doc.addField("manu", "this is SolrInputDocuments "+(i+1)+" content");
        	
        	docs.add(doc);
		}
        
        //doc.addChildDocument(child);
        try {
 
            UpdateResponse response = server.add(docs);
            /*List<String> a = new ArrayList<>();
            for (int i = 0; i < 13; i++) {
				a.add(String.valueOf(i));
			}
            server.deleteById(a);*/
            // 提交
            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) {
            System.err.print(e);
        }
    }
    
    
    /**
     * 查询
     */
    @Test
    public void testQuery() {
        String queryStr = "*:*";
        SolrQuery params = new SolrQuery(queryStr);
        //起始记录
        params.setStart(0);
        //每页显示多少条
        params.setRows(10);
        //排序
        params.setSort("incubationdate_dt", ORDER.asc);
        //全文搜索
        params.setQuery("Input");
        //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") + 
                		"  name : " + doc.get("name") + 
                		"  incubationdate_dt:" + doc.get("incubationdate_dt"));
            }
        } catch (SolrServerException e) {
            System.err.print(e);
        }
    }
}

8、pom.xml

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

猜你喜欢

转载自blog.csdn.net/gaosilingqwer/article/details/79880669