• lucene_09_solrj的使用


    什么是solrj

     solrj 是访问Solr 服务的java客户端,提供索引(增删改)和搜索(查)的请求方法,Solrj 通常在嵌入在业务系统中,通过Solrj的API接口操作Solr服务,如下图:

    solr的使用

    第一步:配置pom.xml

    内容如下:

    <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.chen</groupId>
      <artifactId>solr</artifactId>
      <version>1.0-SNAPSHOT</version>
      <packaging>jar</packaging>
    
      <name>solr</name>
      <url>http://maven.apache.org</url>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      </properties>
    
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
    
        <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
        <dependency>
          <groupId>commons-io</groupId>
          <artifactId>commons-io</artifactId>
          <version>2.5</version>
        </dependency>
    
    
        <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>1.7.7</version>
        </dependency>
    
        <!-- https://mvnrepository.com/artifact/org.apache.solr/solr-solrj -->
        <dependency>
          <groupId>org.apache.solr</groupId>
          <artifactId>solr-solrj</artifactId>
          <version>7.2.1</version>
        </dependency>
          <dependency>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>RELEASE</version>
          </dependency>
    
    
      </dependencies>
    </project>

    第二步:java代码

    /**
     * FileName: SolrManager
     * Author:   GET_CHEN
     * Date:     2018/4/3 14:29
     * Description:
     */
    package com.chen;
    
    import org.apache.solr.client.solrj.SolrQuery;
    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.common.SolrDocument;
    import org.apache.solr.common.SolrDocumentList;
    import org.apache.solr.common.SolrInputDocument;
    import org.junit.Test;
    
    import java.io.IOException;
    import java.util.List;
    import java.util.Map;
    
    public class SolrManager {
        @Test
        public void testAdd() throws IOException, SolrServerException {
    
            String baseSolrUrl = "http://localhost:8080/solr/collection2"; //solr的访问路径。collection2是solr的核。默认是collection1.
            //连接solr服务器
            HttpSolrClient httpSolrClient = new HttpSolrClient.Builder(baseSolrUrl).build();
    
            SolrInputDocument document = new SolrInputDocument();
            document.addField("id", "333");
            document.addField("blog_title", "solrj的使用");
            document.addField("blog_keyWord", "solrj");
    
            httpSolrClient.add(document);
            
            httpSolrClient.commit();
            httpSolrClient.close();
    
    
        }
    
        @Test
        public void testDelete() throws IOException, SolrServerException {
            String baseSolrUrl = "http://localhost:8080/solr/collection2";
            //连接solr服务器
            HttpSolrClient httpSolrClient = new HttpSolrClient.Builder(baseSolrUrl).build();
    //        httpSolrClient.deleteById("333");//通过id删除
            httpSolrClient.deleteByQuery("*:*");//通过语法删,删除全部
            httpSolrClient.commit();
            httpSolrClient.close();
        }
    
        @Test
        public void testQuery() throws Exception {
            String baseSolrUrl = "http://localhost:8080/solr/collection2";
            System.out.println(baseSolrUrl);
            //连接solr服务器
            HttpSolrClient httpSolrClient = new HttpSolrClient.Builder(baseSolrUrl).build();
            SolrQuery solrQuery = new SolrQuery();
            solrQuery.setQuery("*:*");
            QueryResponse queryResponse = httpSolrClient.query(solrQuery);
            SolrDocumentList results = queryResponse.getResults();
            for (SolrDocument document: results) {
                System.out.println(document.get("id"));
                System.out.println(document.get("blog_title"));
                System.out.println(document.get("blog_summary"));
                System.out.println(document.get("blog_keyWord"));
                System.out.println("==========================");
            }
            httpSolrClient.commit();
            httpSolrClient.close();
        }
    
        @Test
        public void testDiffQuery() throws Exception{
    
            String baseSolrUrl = "http://localhost:8080/solr/collection2";
            //连接solr服务器
            HttpSolrClient httpSolrClient = new HttpSolrClient.Builder(baseSolrUrl).build();
            SolrQuery solrQuery = new SolrQuery();
            //关键字
            solrQuery.setQuery("大学");
            //设置默认域
            solrQuery.set("df","blog_title");
            //设置查询域
           solrQuery.set("fl","id,blog_summary");
            //排序
            solrQuery.setSort("id", SolrQuery.ORDER.desc);
            //分页
            solrQuery.setStart(0);
            solrQuery.setRows(3);
            //高亮
            solrQuery.setHighlight(true);
            //指定高亮域
            solrQuery.addHighlightField("blog_title");
            solrQuery.setHighlightSimplePre("<span style='color:red'>");
            solrQuery.setHighlightSimplePost("</span>");
            QueryResponse queryResponse = httpSolrClient.query(solrQuery);
            SolrDocumentList results = queryResponse.getResults();
            //获取高亮内容
            Map<String, Map<String, List<String>>> highlighting = queryResponse.getHighlighting();
    
    
            for (SolrDocument document: results) {
                System.out.println(document.get("id"));
                System.out.println(document.get("blog_title"));
                System.out.println(document.get("blog_summary"));
                System.out.println(document.get("blog_keyWord"));
                System.out.println("==========================");
                Map<String, List<String>> map = highlighting.get(document.get("id"));
                List<String> blog_summary = map.get("blog_title");
                System.out.println(blog_summary.get(0));
                System.out.println("==========highlighting===============");
            }
            httpSolrClient.commit();
            httpSolrClient.close();
    
        }
    }
  • 相关阅读:
    国外pip源下载太慢,修改成国内pip源
    i++和i--
    CSS3之太极图源代码
    对 Vue 的理解(一)
    CSS 盒子模型及 float 和 position
    Notes about Vue Style Guide
    TypeScript 入门笔记
    flex 布局
    git rebase 和 git merge 总结
    理解JavaScript作用域
  • 原文地址:https://www.cnblogs.com/getchen/p/8709629.html
Copyright © 2020-2023  润新知