详解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内容