solr在java中的使用实例代码

网友投稿 264 2023-05-04


solr在java中的使用实例代码

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

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

org.apache.solr

solr-solrj

5.3.1

junit

junit&lMGbHfSpt;/artifactId>

4.11

org.slf4j

slf4j-log4j12

1.7.7

commons-logging

commons-logging

1.1.3

java代码:

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之后好像添加了不少东西,其中CoMGbHfSpmmonsHttpSolrServer这个类改名为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(thttp://rue);

//设置高亮的字段

query.addHighlightField("name");

//设置高亮的样式

query.setHighlightSimplePre("");

query.setHighlightSimplePost("");

//获取查询结果

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 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://doc88.com/p-6763747939865.html


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java的SPI机制实例详解
下一篇:详解webpack分包及异步加载套路
相关文章

 发表评论

暂时没有评论,来抢沙发吧~