服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - solr在java中的使用实例代码

solr在java中的使用实例代码

2020-11-25 10:53俺就不起网名 Java教程

本篇文章主要介绍了solr在java中的使用实例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

SolrJ是操作Solr的Java客户端,它提供了增加、修改、删除、查询Solr索引的JAVA接口。SolrJ针对 Solr提供了Rest 的HTTP接口进行了封装, SolrJ底层是通过使用httpClient中的方法来完成Solr的操作。

jar包的引用(maven pom.xml):

 
?
1
 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<dependency>
      <groupId>org.apache.solr</groupId>
      <artifactId>solr-solrj</artifactId>
      <version>5.3.1</version>
</dependency>
<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
</dependency>
<dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.7</version>
</dependency>
<dependency>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
      <version>1.1.3</version>
</dependency>

java代码:

 
?
1
 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
package entity;
 
import java.io.IOException;
import java.util.List;
 
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
 
 
public class SolrJTest {
   //指定solr服务器的地址
   private final static String SOLR_URL = "http://localhost:8080/solr/";
 
   /**
   * 创建SolrServer对象
   *
   * 该对象有两个可以使用,都是线程安全的
   * 1、CommonsHttpSolrServer:启动web服务器使用的,通过http请求的
   * 2、 EmbeddedSolrServer:内嵌式的,导入solr的jar包就可以使用了
   * 3、solr 4.0之后好像添加了不少东西,其中CommonsHttpSolrServer这个类改名为HttpSolrClient
   *
   * @return
   */
   public HttpSolrClient createSolrServer(){
     HttpSolrClient solr = null;
     solr = new HttpSolrClient(SOLR_URL);
     return solr;
   }
 
 
   /**
   * 往索引库添加文档
   * @throws IOException
   * @throws SolrServerException
   */
   public void addDoc() throws SolrServerException, IOException{
    //构造一篇文档
     SolrInputDocument document = new SolrInputDocument();
     //往doc中添加字段,在客户端这边添加的字段必须在服务端中有过定义
     document.addField("id", "8");
     document.addField("name", "周新星");
     document.addField("description", "一个灰常牛逼的军事家");
     //获得一个solr服务端的请求,去提交 ,选择具体的某一个solr core
    HttpSolrClient solr = new HttpSolrClient(SOLR_URL + "my_core");
    solr.add(document);
    solr.commit();
    solr.close();
   }
 
 
   /**
   * 根据id从索引库删除文档
   */
   public void deleteDocumentById() throws Exception {
     //选择具体的某一个solr core
     HttpSolrClient server = new HttpSolrClient(SOLR_URL+"my_core");
     //删除文档
     server.deleteById("8");
     //删除所有的索引
     //solr.deleteByQuery("*:*");
     //提交修改
     server.commit();
     server.close();
   }
 
   /**
   * 查询
   * @throws Exception
   */
   public void querySolr() throws Exception{
     HttpSolrClient solrServer = new HttpSolrClient(SOLR_URL+"my_core/");
     SolrQuery query = new SolrQuery();
     //下面设置solr查询参数
     //query.set("q", "*:*");// 参数q 查询所有 
     query.set("q","周星驰");//相关查询,比如某条数据某个字段含有周、星、驰三个字 将会查询出来 ,这个作用适用于联想查询
 
     //参数fq, 给query增加过滤查询条件
     query.addFilterQuery("id:[0 TO 9]");//id为0-4
 
     //给query增加布尔过滤条件
     //query.addFilterQuery("description:演员"); //description字段中含有“演员”两字的数据
 
     //参数df,给query设置默认搜索域
     query.set("df", "name");
 
     //参数sort,设置返回结果的排序规则
     query.setSort("id",SolrQuery.ORDER.desc);
 
     //设置分页参数
     query.setStart(0);
     query.setRows(10);//每一页多少值
 
     //参数hl,设置高亮
     query.setHighlight(true);
     //设置高亮的字段
     query.addHighlightField("name");
     //设置高亮的样式
     query.setHighlightSimplePre("<font color='red'>");
     query.setHighlightSimplePost("</font>");
 
     //获取查询结果
     QueryResponse response = solrServer.query(query);
     //两种结果获取:得到文档集合或者实体对象
 
     //查询得到文档的集合
     SolrDocumentList solrDocumentList = response.getResults();
     System.out.println("通过文档集合获取查询的结果");
     System.out.println("查询结果的总数量:" + solrDocumentList.getNumFound());
     //遍历列表
     for (SolrDocument doc : solrDocumentList) {
       System.out.println("id:"+doc.get("id")+"  name:"+doc.get("name")+"  description:"+doc.get("description"));
     }
 
     //得到实体对象
     List<Person> tmpLists = response.getBeans(Person.class);
     if(tmpLists!=null && tmpLists.size()>0){
       System.out.println("通过文档集合获取查询的结果");
       for(Person per:tmpLists){
         System.out.println("id:"+per.getId()+"  name:"+per.getName()+"  description:"+per.getDescription());
       }
     }
   }
 
   public static void main(String[] args) throws Exception {
     SolrJTest solr = new SolrJTest();
     //solr.createSolrServer();
     solr.addDoc();
     solr.deleteDocumentById();
     solr.querySolr();
  }
}

参考文档:http://www.doc88.com/p-6763747939865.html

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://blog.csdn.net/u012385190/article/details/53115546

延伸 · 阅读

精彩推荐