SolrJ使用


1
//向solr索引库中添加索引 2 public void addDoc() throws Exception { 3 //创建solr客户端的对象 4 HttpSolrClient client = new HttpSolrClient("http://localhost:8080/solr/core"); 5 //创建文档对象 6 SolrInputDocument sd = new SolrInputDocument(); 7 8 sd.addField("id", "001"); 9 sd.addField("product_name", "solr教程"); 10 sd.addField("product_catalog_name", "IT技术"); 11 sd.addField("product_description", "很厉害的技术"); 12 sd.addField("product_price", 299); 13 sd.addField("product_picture", "001.jpg"); 14 //把文档加入服务器 15 client.add(sd); 16 client.commit(); 17 }

删除文档

1 public void delDoc() throws Exception {
2         //创建solr客户端的对象
3         HttpSolrClient client = new HttpSolrClient("http://localhost:8080/solr/core");
4         client.deleteById("001");
5     //    client.deleteByQuery("product_name:青蛙"); 根据查询删除
6         client.commit();
7     }

查询

public void queryDoc() throws Exception {
        //创建solr客户端的对象
        HttpSolrClient client = new HttpSolrClient("http://localhost:8080/solr/core");
        //创建solr的查询对象
        SolrQuery sq = new SolrQuery();
        //设置查询条件
        sq.set("q", "product_name:青蛙");
        sq.set("fq", "product_price:[10 TO 100]");
        sq.addSort("product_price",ORDER.asc);
        //查询
        QueryResponse qr = client.query(sq);
        //获得查询结果
        SolrDocumentList results = qr.getResults();
        //获得查询的记录数
        long numFound = results.getNumFound();
        System.out.println("查询的记录数是  " + numFound);
        for (SolrDocument sd : results) {
            //获得文档域
            String id = (String) sd.getFieldValue("id");
            String product_name = (String) sd.getFieldValue("product_name");
            String product_catalog_name = (String) sd.getFieldValue("product_catalog_name");
            String product_description = (String) sd.getFieldValue("product_description"); 
            double product_price =  (double) sd.getFieldValue("product_price"); 
            System.out.println("--------------");
            System.out.println("id " + id);
            System.out.println("商品名字  " + product_name);
            System.out.println("商品类别名字 " + product_catalog_name);
            System.out.println("商品描述  " + product_description);
            System.out.println("商品价格  " + product_price);
        }
    }

带高亮的查询

 1 public void queryDoc1() throws Exception {
 2         //创建solr客户端的对象
 3         HttpSolrClient client = new HttpSolrClient("http://localhost:8080/solr/core");
 4         //创建solr的查询对象
 5         SolrQuery sq = new SolrQuery();
 6         //设置查询条件
 7         sq.set("q", "product_name:青蛙");
 8         sq.set("fq", "product_price:[10 TO 100]");
 9         sq.addSort("product_price",ORDER.asc);
10         //开启高亮
11         sq.setHighlight(true);
12         sq.addHighlightField("product_name");
13         sq.setHighlightSimplePre("<b>");
14         sq.setHighlightSimplePost("</b>");
15         //查询
16         QueryResponse qr = client.query(sq);
17         //获得查询结果
18         SolrDocumentList results = qr.getResults();
19         //获得查询的记录数
20         long numFound = results.getNumFound();
21         System.out.println("查询的记录数是  " + numFound);
22         for (SolrDocument sd : results) {
23             //获得文档域
24             String id = (String) sd.getFieldValue("id");
25             String product_name = (String) sd.getFieldValue("product_name");
26             String product_catalog_name = (String) sd.getFieldValue("product_catalog_name");
27             String product_description = (String) sd.getFieldValue("product_description"); 
28             double product_price =  (double) sd.getFieldValue("product_price"); 
29             System.out.println("--------------");
30             System.out.println("id " + id);
31             System.out.println("商品名字  " + product_name);
32             System.out.println("商品类别名字 " + product_catalog_name);
33             System.out.println("商品描述  " + product_description);
34             System.out.println("商品价格  " + product_price);
35             //获得高亮的结构体
36             Map<String, Map<String, List<String>>> highlighting = qr.getHighlighting();
37             if(highlighting != null){
38                 //根据id来获得某一个域的高亮的内容
39                 Map<String, List<String>> map = highlighting.get(id);
40                 //根据具体的域来获得高亮内容
41                 List<String> list = map.get("product_name");
42                 if(list != null && list.size() > 0){
43                     //打印高亮内容
44                     for (String str : list) {
45                         System.out.println(str);
46                     }
47                 }
48             }
49         }
50     }

 

posted @ 2018-07-26 21:47  cat_fish  阅读(212)  评论(0编辑  收藏  举报