一、SolrJ是什么?
SolrJ是Solr提供的Java客户端API。通过SolrJ可以实现Java程序对Solr中数据的操作。
大前提:添加SolrJ依赖。依赖版本和Solr版本严格对应
我用的版本:根据自己的solr版本对应
dependencies>
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>7.7.2</version>
</dependency>
</dependencies>
二、测试
1.导入依赖
2.编写代码
1.新增修改实现:代码如下
新增修改语法一样,新增的id如果已存在该id,那就会修改也存在的id,如果不存在就新增
@Test
public void testAdd() throws Exception {
//Solr地址
String url = "http://192.168.0.107:8983/solr/testcore";
HttpSolrClient solrClient = null;
try {
//Solr客户端
solrClient = new HttpSolrClient.Builder(url).build();
//Solr输入文档
SolrInputDocument solrInputDocument = new SolrInputDocument();
solrInputDocument.addField("id", "6");
solrInputDocument.addField("name", "小灵通手机");
solrInputDocument.addField("price", 10000);
//添加输入文档
solrClient.add(solrInputDocument);
//提交
solrClient.commit();
} catch (Exception e) {
e.fillInStackTrace();
} finally {
//关闭资源
solrClient.close();
}
}
效果图:
2.删除实现:
@Test
public void deleteTest() throws Exception {
String url = "http://192.168.0.107:8983/solr/testcore";
HttpSolrClient httpSolrClient = null;
try {
httpSolrClient = new HttpSolrClient.Builder(url).build();
httpSolrClient.deleteById("5");
httpSolrClient.commit();
} catch (Exception e) {
e.fillInStackTrace();
} finally {
httpSolrClient.close();
}
}
3.查询功能
//查询
@Test
public void showSolr() throws Exception {
String url = "http://192.168.0.107:8983/solr/testcore";
HttpSolrClient solrClient = null;
try {
solrClient = new HttpSolrClient.Builder(url).build();
//封装所有查询条件
SolrQuery solrQuery = new SolrQuery();
//查询所有
solrQuery.setQuery("*:*");
//根据条件查询
//solrQuery.setQuery("name=热卖);
QueryResponse response = solrClient.query(solrQuery);
SolrDocumentList results = response.getResults();
System.out.println("总条数" + results.getNumFound());
for (SolrDocument list : results){
System.out.println(list);
}
} catch (Exception e) {
e.fillInStackTrace();
} finally {
solrClient.close();
}
}
效果图
4.高亮操作
//高亮
@Test
public void highlightest() throws IOException {
//连接solr地址
String url = "http://192.168.0.107:8983/solr/testcore";
//创建solr客户端
HttpSolrClient solrClient = null;
try {
solrClient = new HttpSolrClient.Builder(url).build();
//封装查询
SolrQuery solrQuery = new SolrQuery();
//根据条件查询
solrQuery.setQuery("name:热卖");
//开启高亮
solrQuery.setHighlight(true);
//设置高亮键
solrQuery.addHighlightField("name");
//前缀
solrQuery.setHighlightSimplePre("<span>");
//后缀
solrQuery.setHighlightSimplePost("</span>");
QueryResponse response = solrClient.query(solrQuery);
//获取数据
SolrDocumentList results = response.getResults();
//获取高亮返回值
Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();
//遍历
for (SolrDocument list : results) {
System.out.println(list.get("id"));
Map<String, List<String>> map = highlighting.get(list.get("id"));
List<String> HLList = map.get("name");
//判断
if (HLList != null && HLList.size() > 0) {
System.out.println(HLList.get(0));
} else {
System.out.println(list.get("name"));
}
System.out.println("===============");
System.out.println(list.get("price"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
//关闭资源
solrClient.close();
}
}