solr在java中的使用实例代码
发布时间 - 2026-01-11 02:06:13 点击率:次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版本低问题解决方案
# 文档
# 查询结果
# 服务端
# 客户端
# 都是
# 将会
# 两种
# 遍历
# 适用于
# 有过
# 布尔
# 分页
# 可以使用
# 三个字
# 来完成
# 两字
# 大家多多
# 进行了
# 就可以
# 使用了
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
jQuery中的100个技巧汇总
Laravel如何生成API文档?(Swagger/OpenAPI教程)
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)
PHP 500报错的快速解决方法
Win11摄像头无法使用怎么办_Win11相机隐私权限开启教程【详解】
Android仿QQ列表左滑删除操作
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
Android中AutoCompleteTextView自动提示
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
js实现获取鼠标当前的位置
Java遍历集合的三种方式
标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南
php485函数参数是什么意思_php485各参数详细说明【介绍】
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】
Python文件操作最佳实践_稳定性说明【指导】
中山网站推广排名,中山信息港登录入口?
PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)
微信小程序 require机制详解及实例代码
如何在阿里云域名上完成建站全流程?
简历没回改:利用AI润色让你的文字更专业
怎样使用JSON进行数据交换_它有什么限制
如何快速搭建安全的FTP站点?
在线制作视频的网站有哪些,电脑如何制作视频短片?
Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
如何实现javascript表单验证_正则表达式有哪些实用技巧
php结合redis实现高并发下的抢购、秒杀功能的实例
C++用Dijkstra(迪杰斯特拉)算法求最短路径
如何在IIS7中新建站点?详细步骤解析
Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】
HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】
高端建站如何打造兼具美学与转化的品牌官网?
独立制作一个网站多少钱,建立网站需要花多少钱?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
Swift开发中switch语句值绑定模式
JS弹性运动实现方法分析
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
如何快速搭建高效香港服务器网站?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
如何在阿里云服务器自主搭建网站?
轻松掌握MySQL函数中的last_insert_id()
香港服务器租用费用高吗?如何避免常见误区?
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
清除minerd进程的简单方法
Thinkphp 中 distinct 的用法解析
Laravel中间件如何使用_Laravel自定义中间件实现权限控制

