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

jar包的引用(maven pom.xml):
<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代码:
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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# java
# 使用solr
# java中使用solr
# solr
# 实例
# java操作solr实现查询功能的实例
# 详解java整合solr5.0之solrj的使用
# java多线程处理执行solr创建索引示例
# maven项目下solr和spring的整合配置详解
# Ubuntu16.04安装部署solr7的图文详细教程
# linux下安装solr的教程详解
# SpringBoot整合Redis、ApachSolr和SpringSession的示例
# 启动Solr提示Java版本低问题解决方案
# 文档
# 查询结果
# 服务端
# 客户端
# 都是
# 将会
# 两种
# 遍历
# 适用于
# 有过
# 布尔
# 分页
# 可以使用
# 三个字
# 来完成
# 两字
# 大家多多
# 进行了
# 就可以
# 使用了
相关文章:
如何通过FTP空间快速搭建安全高效网站?
制作网页的网站有哪些,电脑上怎么做网页?
如何在IIS管理器中快速创建并配置网站?
建站主机如何选?高性价比方案全解析
孙琪峥织梦建站教程如何优化数据库安全?
香港服务器部署网站为何提示未备案?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
小型网站建站如何选择虚拟主机?
建站之星如何实现五合一智能建站与营销推广?
建站之星代理如何优化在线客服效率?
定制建站是什么?如何实现个性化需求?
商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
如何通过VPS搭建网站快速盈利?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
广州网站建站公司选择指南:建站流程与SEO优化关键词解析
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
建站之星导航配置指南:自助建站与SEO优化全解析
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
如何构建满足综合性能需求的优质建站方案?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
建站之星官网登录失败?如何快速解决?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
高性价比服务器租赁——企业级配置与24小时运维服务
如何使用Golang安装API文档生成工具_快速生成接口文档
如何用美橙互联一键搭建多站合一网站?
如何配置IIS站点权限与局域网访问?
模具网站制作流程,如何找模具客户?
浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?
建站主机选购指南:核心配置与性价比推荐解析
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
公司网站制作价格怎么算,公司办个官网需要多少钱?
如何高效配置IIS服务器搭建网站?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
建站主机是否等同于虚拟主机?
建站之星价格显示格式升级,你的预算足够吗?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何在建站之星绑定自定义域名?
制作销售网站教学视频,销售网站有哪些?
学校建站服务器如何选型才能满足性能需求?
零基础网站服务器架设实战:轻量应用与域名解析配置指南
高端网站建设与定制开发一站式解决方案 中企动力
安云自助建站系统如何快速提升SEO排名?
,sp开头的版面叫什么?
建站之星代理商如何保障技术支持与售后服务?
动图在线制作网站有哪些,滑动动图图集怎么做?
如何制作网站标识牌,动态网站如何制作(教程)?
*请认真填写需求信息,我们会在24小时内与您取得联系。