使用SolrJ管理索引库
作者:互联网
使用solrJ操作索引库,必须先开启服务器。因为操作索引库的是solr项目,我们只是通过solrJ接口向该项目发送请求,告诉solr项目来操作索引库。
1、添加jar包
添加的jar包分为两部分
(1)solrj相关jar
(2)solr运行的jar包
2、添加/更新document
本质没有update方法,update就是删除document后添加一个document。id为索引库中有的就是更新,没有就是添加。
@Test
public void test() throws SolrServerException, IOException {
//和solr服务器创建连接,默认连接的是collecting1
//String baseURL = "http://localhost:8080/solr/collection2";
String baseURL = "http://localhost:8080/solr";
SolrServer solrServer = new HttpSolrServer(baseURL);
//创建document对象
SolrInputDocument document = new SolrInputDocument();
document.addField("id", "firstSolrJ");
document.addField("title", "不患无位,患所以立;不患莫己知,求为可知也");
//添加document并提交
solrServer.add(document);
solrServer.commit();
}
3、删除document
@Test
public void testDelete() throws SolrServerException, IOException {
String baseURL = "http://localhost:8080/solr";
SolrServer solrServer = new HttpSolrServer(baseURL);
//删除所有
solrServer.deleteByQuery("*:*", 1000);
//根据id删除
//solrServer.deleteById("firstSolrJ");
//solrServer.commit();
}
4、查询文档
@Test
public void testSearch() throws SolrServerException {
//获得连接
String baseURL = "http://localhost:8080/solr";
SolrServer solrServer = new HttpSolrServer(baseURL);
/*------------------------------添加查询条件------------------------------------*/
SolrQuery query = new SolrQuery();
//设置默认域
//query.set("df", "product_name");
//query.set("q", "台灯");
//query.setQuery("product_name:台灯");
//关键词
query.set("q", "product_name:台灯");
//设置查询的field
query.set("fl", "id,product_name,product_catalog_name,product_price");
//过滤条件
query.set("fq", "product_catalog_name:幽默杂货");
//价格区间
query.set("fq", "product_price:[* TO 10]");
//设置价格排序
query.addSort("product_price", ORDER.asc);
//分页,默认0开始,显示10条
query.setStart(0);
query.setRows(5);
//高亮
query.setHighlight(true);
query.addHighlightField("product_name");
query.setHighlightSimplePre("<span style='color:red'>");
query.setHighlightSimplePost("</span>");
/*------------------------------添加查询条件------------------------------------*/
//执行查询
QueryResponse response = solrServer.query(query);
/*------------------------------显示查询结果------------------------------------*/
SolrDocumentList results = response.getResults();
System.out.println("共查到" + results.getNumFound() + "记录");
//获得高亮map——结构可以看solr后台管理
Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();
System.out.println();
for (SolrDocument doc : results) {
System.out.println(doc.get("id"));
System.out.println(doc.get("product_catalog_name"));
System.out.println(doc.get("product_price"));
System.out.println(doc.get("product_name"));
System.out.println(doc.get("product_picture"));
//显示高亮域
System.out.println(highlighting.get(doc.get("id")).get("product_name").get(0));
System.out.println("---------------------我是分割线------------------------------");
}
/*------------------------------显示查询结果------------------------------------*/
}
标签:product,name,管理,SolrJ,索引,println,query,document,out 来源: https://blog.csdn.net/qq_40638598/article/details/97146639