详解java整合solr5.0之solrj的使用
发布时间 - 2026-01-11 02:06:11 点击率:次1、首先导入solrj需要的的架包
2、需要注意的是低版本是solr是使用SolrServer进行URL实例的,5.0之后已经使用SolrClient替代这个类了,在添加之后首先我们需要根据schema.xml配置一下我们的分词器
这里的msg_all还需要在schema.xml中配置
它的主要作用是将msg_title,msg_content两个域的值拷贝到msg_all域中,我们在搜索的时候可以只搜索这个msg_all域就可以了,
solr默认搜索需要带上域,比如
solr更改默认搜索域的地方也在schema.xml,它默认是搜索text域的,但是5.0之后不在这里配置默认搜索域了,它的文档也告诉我们,在solrconfig.xml中配置
在solrconfig.xml中配置默认搜素域,这样我们就可以按照我们自己的域进行搜索了
配置好以上,就可以使用代码进行CURD
private final static String URL="http://localhost:8080/solr/java";
public SolrClient server=null;
@Before
public void init() throws Exception{
server=new HttpSolrClient(URL);
}
删除所有分词
//删除所有分词
@Test
public void testDel() throws Exception{
server.deleteByQuery("*:*");
server.commit();//先删除 基于query的删除 会删除所有建立的索引文件
}
增加分词
@Test
public void testAdd() throws Exception{
SolrInputDocument doc=new SolrInputDocument();
doc.addField("id", "3");
doc.addField("msg_title", "新浪微博");
doc.addField("msg_content", "我有一个微博帐号名字叫做什么呢?");
server.add(doc);
server.commit();
}
基于Bean增加分词
@Test
public void test03() throws Exception{
List<Message> msgs=new ArrayList<Message>();
msgs.add(new Message("4", "第四个测试solr测试文件", new String[]{"中华人民共和国万岁","中华上下五千年那年"}));
msgs.add(new Message("5", "第5个好朋友是什么意思呢?", new String[]{"上海是个好地方","歌唱我们亲爱的祖国曾经走过千山万水"}));
server.addBeans(msgs);
server.commit();
}
查询结果
@Test
public void test04() throws Exception{
//定义查询内容 * 代表查询所有 这个是基于结果集
SolrQuery query = new SolrQuery("solr");
query.setStart(0);//起始页
query.setRows(3);//每页显示数量
QueryResponse rsp = server.query( query );
SolrDocumentList results = rsp.getResults();
System.out.println(results.getNumFound());//查询总条数
for(SolrDocument doc:results){
System.out.println(doc);
}
}
将查询结果集封装为对象Bean
@Test
public void test05() throws Exception{
SolrQuery query = new SolrQuery("中华");// * 号 是查询 所有的数据
QueryResponse rsp = server.query( query );
List<Message> beans = rsp.getBeans(Message.class);//这个不能获取查询的总数了 也不能高亮
for(Message message:beans){
System.out.println(message.toString());
}
}
将结果集高亮显示
@Test
public void test06() throws Exception{
//定义查询内容 * 代表查询所有 这个是基于结果集
SolrQuery query = new SolrQuery("solr");
query.setStart(0);//起始页
query.setRows(5);//每页显示数量
query.setParam("hl.fl", "msg_title,msg_content");//设置哪些字段域会高亮显示
query.setHighlight(true).setHighlightSimplePre("<span class='hight'>")
.setHighlightSimplePost("</span>");
QueryResponse rsp = server.query( query );
SolrDocumentList results = rsp.getResults();
System.out.println(results.getNumFound());//查询总条数
for(SolrDocument doc:results){
String id = (String) doc.getFieldValue("id"); //id is the uniqueKey field
if(rsp.getHighlighting().get(id)!=null){
//高亮必须要求存储 不存储的话 没法添加高亮
System.out.println(rsp.getHighlighting().get(id).get("msg_title"));
}
}
}
ok,solr的基本使用就完成了
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# java整合solr
# solr
# java
# 开发
# java操作solr实现查询功能的实例
# solr在java中的使用实例代码
# java多线程处理执行solr创建索引示例
# maven项目下solr和spring的整合配置详解
# Ubuntu16.04安装部署solr7的图文详细教程
# linux下安装solr的教程详解
# SpringBoot整合Redis、ApachSolr和SpringSession的示例
# 启动Solr提示Java版本低问题解决方案
# 就可以
# 每页
# 中华
# 查询结果
# 条数
# 自己的
# 的是
# 是个
# 是基于
# 起始页
# 也在
# 要在
# 好朋友
# 帐号
# 告诉我们
# 什么呢
# 千山万水
# 那年
# 还需
# 中华人民共和国
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置
桂林网站制作公司有哪些,桂林马拉松怎么报名?
如何快速生成凡客建站的专业级图册?
Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
三星网站视频制作教程下载,三星w23网页如何全屏?
Laravel怎么使用Intervention Image库处理图片上传和缩放
Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明
如何破解联通资金短缺导致的基站建设难题?
HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】
大同网页,大同瑞慈医院官网?
Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】
高性能网站服务器部署指南:稳定运行与安全配置优化方案
Laravel的.env文件有什么用_Laravel环境变量配置与管理详解
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
Laravel PHP版本要求一览_Laravel各版本环境要求对照
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
如何用搬瓦工VPS快速搭建个人网站?
使用豆包 AI 辅助进行简单网页 HTML 结构设计
如何注册花生壳免费域名并搭建个人网站?
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
香港服务器网站推广:SEO优化与外贸独立站搭建策略
南京网站制作费用,南京远驱官方网站?
如何用已有域名快速搭建网站?
Laravel如何与Pusher实现实时通信?(WebSocket示例)
简单实现Android验证码
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
iOS验证手机号的正则表达式
Laravel Fortify是什么,和Jetstream有什么关系
JS碰撞运动实现方法详解
如何在万网开始建站?分步指南解析
php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】
,怎么在广州志愿者网站注册?
javascript日期怎么处理_如何格式化输出
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
制作旅游网站html,怎样注册旅游网站?
如何用好域名打造高点击率的自主建站?
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
如何打造高效商业网站?建站目的决定转化率
Laravel项目结构怎么组织_大型Laravel应用的最佳目录结构实践
高端企业智能建站程序:SEO优化与响应式模板定制开发
Laravel如何与Inertia.js和Vue/React构建现代单页应用
如何正确下载安装西数主机建站助手?
如何在Windows服务器上快速搭建网站?
javascript基本数据类型及类型检测常用方法小结
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
Firefox Developer Edition开发者版本入口
Laravel怎么在Blade中安全地输出原始HTML内容

