springboot支持solr 13

solr是非常流行的检索和搜索服务,以lucence的倒排索引为基础。本文将以介绍springboot如何整合solr。

1、环境约束

  • win10 64位操作系统
  • idea2018.1.5
  • maven-3.0.5
  • jdk-8u162-windows-x64

2、前提约束

  • 完成springboot创建web项目 https://www.jianshu.com/p/de979f53ad80
    注意:笔者创建项目的时候约束的包前缀是net.wanho.springboot.solr.solrdemo,读者可以自行创建包名,只是要注意本文中的代码也要修改包名;笔者安装solr服务的机子ip为192.168.100.192,请读者根据自己的情况修改。
  • 完成solr的安装和启动 https://www.jianshu.com/p/de807e2ef12f

3、操作

  • 在pom.xml的增加以下依赖:
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-solr</artifactId>
        </dependency>
  • 修改application.properties为application.yml,在application.yml中添加以下内容:
spring:
  application:
    name: solr
  data:
    solr:
      host: http://192.168.100.192:8080/solr
  • 在src/main/java中添加一个类net.wanho.springboot.solr.solrdemo.SolrController.java
package net.wanho.springboot.solr.solrdemo;

import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrInputDocument;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Collection;
import java.util.Iterator;
import java.util.Map;

@RestController
public class SolrController {

    @Autowired
    private SolrClient solrClient;

    //新增一个文档
    @RequestMapping("/add")
    public void add() throws Exception {
        SolrInputDocument document = new SolrInputDocument();
        document.addField("id", 16);
        document.addField("title", "Apple iPhone X");
        solrClient.add(document);
        solrClient.commit();
    }

    //根据id查询
    @RequestMapping("/get/{id}")
    public void get(@PathVariable("id") String id) throws Exception {
        //根据id查询内容
        SolrDocument solrDocument = solrClient.getById(id);
        //获取field名称
        Collection<String> fieldNames = solrDocument.getFieldNames();
        Iterator<String> iterator = fieldNames.iterator();
        while(iterator.hasNext())
        {
            System.out.println(iterator.next());
        }

        //获取field名和内容
        Map<String, Object> fieldValueMap = solrDocument.getFieldValueMap();
        for(String field:fieldValueMap.keySet())
        {
            System.out.println(field+":"+fieldValueMap.get(field));
        }
    }
}

4、测试

  • 运行主启动类
  • 在浏览器输入以下url,回车,索引便被加到了solr库
http://localhost:8080/add
  • 在浏览器输入以下url,回车,在控制台中就可以看到刚才加入的索引
http://localhost:8080/get/16

以上就是springboot整合solr的过程。

猜你喜欢

转载自www.cnblogs.com/alichengxuyuan/p/12581533.html
13
13)