0
点赞
收藏
分享

微信扫一扫

五、在项目中利用SolrJ客户端对索引进行增、删、改、查

(一)引入相关依赖

<!--solr的java客户端-->
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>4.10.4</version>
</dependency>
<!--SolrJ的相关依赖-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.7.24</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jul-to-slf4j</artifactId>
<version>1.7.24</version>
</dependency>

<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>

(二)增、删、改、查

1、增

/**
* 增加索引
* @throws IOException
* @throws SolrServerException
*/
@Test
public void testCreateIndex() throws IOException, SolrServerException {
String baseUrl = "http://localhost:8080/solr";
//连接solr服务器(单机版)
SolrServer solrServer = new HttpSolrServer(baseUrl);
//添加
SolrInputDocument doc = new SolrInputDocument();
doc.setField("id", "4");
doc.setField("name", "潘4");
solrServer.add(doc);
//手动提交
solrServer.commit();
}

2、删

/**
* 删除
* @throws IOException
* @throws SolrServerException
*/
@Test
public void testDeleteIndex() throws IOException, SolrServerException {
String baseUrl = "http://localhost:8080/solr";
//连接solr服务器(单机版)
SolrServer solrServer = new HttpSolrServer(baseUrl);
//删除
String query = "id:1";
solrServer.deleteByQuery(query, 1000);
}

3、改

/**
* 更新
* @throws IOException
* @throws SolrServerException
*/
@Test
public void testUpdateIndex() throws IOException, SolrServerException {
String baseUrl = "http://localhost:8080/solr";
//连接solr服务器(单机版)
SolrServer solrServer = new HttpSolrServer(baseUrl);
//更新(与添加一致,只要ID相同,就是更新;ID不同,就是添加)
}

4、查

/**
* 查询
* @throws IOException
* @throws SolrServerException
*/
@Test
public void testSearchIndex() throws IOException, SolrServerException {
String baseUrl = "http://localhost:8080/solr";
//连接solr服务器(单机版)
SolrServer solrServer = new HttpSolrServer(baseUrl);
//查询 过滤 数据区间 排序 分页(开始行,每页行数) 高亮 默认域 只查询指定域
SolrQuery solrQuery = new SolrQuery();

//1、关键词(不设查询条数的话,默认返回10条)
// solrQuery.set("q", "book_name:爱");
solrQuery.setQuery("book_name:爱");

///2、过滤条件
solrQuery.setFilterQueries("book_tags:心理学");

///3、区间(主要用于数值型索引)
solrQuery.setFilterQueries("id:[1000 TO 5000]");

///4、排序
solrQuery.addSort("id", SolrQuery.ORDER.desc);

//5、分页
solrQuery.setStart(0);
solrQuery.setRows(5);

//6、设置默认域
solrQuery.set("df", "book_name");

//7、指定查询域(显示的结果,未指定的不显示)
// solrQuery.set("fl", "id,book_name"); 和下面同等效果
solrQuery.setFields("id", "book_name");

//8、高亮
//8.1打开高亮开关
solrQuery.setHighlight(true);
//8.2指定高亮域
solrQuery.addHighlightField("book_name");
//8.3指定高亮域前缀
solrQuery.setHighlightSimplePre("<span style='color:red'>");
//8.3指定高亮域后缀
solrQuery.setHighlightSimplePost("</span>");

//执行查询
QueryResponse queryResponse = solrServer.query(solrQuery);
//文档结果集
SolrDocumentList documentList = queryResponse.getResults();

/**
* 获取高亮文档结果集(solr服务器再返回查询结果集时,普通查询和高亮查询是两个结果集,要分别遍历显示)
* 基本结构:
* 最外层Map: K id V Map
* 内层Map:K 域名 V List
* List: list.get(0)
*/
Map<String, Map<String, List<String>>> highlighting = queryResponse.getHighlighting();

//总条数
long numFound = documentList.getNumFound();
System.out.println(numFound);

for (SolrDocument solrDocument : documentList){
System.out.println(solrDocument.get("id"));
System.out.println(solrDocument.get("book_name"));
System.out.println(solrDocument.get("book_author"));
System.out.println(solrDocument.get("book_tags"));

System.out.println("------------------------------------------------");
/**
* 获取高亮文档结果集
* 基本结构:
* 最外层Map: K id V Map
* 内层Map:K 域名 V List
* List: list.get(0)
*/
Map<String, List<String>> map = highlighting.get(solrDocument.get("id"));
List<String> list = map.get("book_name");
System.out.println(list.get(0));

}
}


举报

相关推荐

利用idea对mysql进行增删查改

0 条评论