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的过程。