热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

solr8.0springboot整合solr(四)

引言:solr搭建起后,就该应用到java后台开发里了,接下来就用springboot整合应用solr 一:引入jar包<!--solr--&

引言:

  solr搭建起后,就该应用到java后台开发里了,接下来就用springboot整合应用solr

 

一:引入jar包

  


        <dependency>
            <groupId>org.springframework.datagroupId>
            <artifactId>spring-data-solrartifactId>
            <version>4.0.6.RELEASEversion>
        dependency>

        
        <dependency>
            <groupId>org.apache.solrgroupId>
            <artifactId>solr-solrjartifactId>
            <version>8.0.0version>
        dependency>

 

二:对application配置文件进行配置(mycore1是我创建的核心,具体名字改为你所创建的核心)

spring:
  data:
    solr:
      host: http://127.0.0.1:8983/solr/mycore1

 

三:接下来就是代码操作了(详细解释看注解),这个只是我的服务层

@Service
public class SearchService {

    @Autowired
    private SolrClient solrClient;
//search就是搜索的内容,currentpage是因为我做了分页,如果没做分页可忽略此参数
    public PageResult searchNews(String search,int currentPage) throws IOException, SolrServerException {
//        创建solr查询对象
        SolrQuery query = new SolrQuery();
        if(null != search && !"".equals(search)){
//            设置查询关键词
            query.setQuery(search);
//            设置默认查询域
            query.set("df", "news_keywords");
        }
//        高亮显示
        query.setHighlight(true);
//        设置高亮显示字段
        query.addHighlightField("newsTitle,newsAbstract");
        query.setHighlightSimplePre("");
        query.setHighlightSimplePost("");
//        设置排序规则
        query.setSort("newsTime",SolrQuery.ORDER.desc);
//        设置返回格式
        query.set("wt","json");
//        设置分页
        query.set("start", (currentPage - 1) * 10);
        query.set("rows", 10);
//        进行查询得到返回结果
        QueryResponse queryRespOnse= solrClient.query(query);
//        取出高亮部分
        Map>> highlighting = queryResponse.getHighlighting();
//        得到主体数据部分
        SolrDocumentList results = queryResponse.getResults();

        ArrayList newsList = new ArrayList<>();
//        对主体数据进行遍历,将数据依次保存到news对象中,然后将news对象加入list集合就是查询到的所有新闻
        for (SolrDocument result : results){
            NewsWithBLOBs news = new NewsWithBLOBs();
            news.setNewsId(result.get("id").toString());
            news.setNewsCover(result.get("newsCover").toString());
            news.setNewsTime((Date) result.get("newsTime"));
            news.setNewsBrowse((Integer) result.get("newsBrowse"));
            news.setNewsSchoolid(result.get("newsSchoolid").toString());
            news.setNewsCategoryid(result.get("newsCategoryid").toString());
            news.setNewsAbstract(result.get("newsAbstract").toString());
            news.setNewsContent(result.get("newsContent").toString());
//            设置高亮部分,下边是得到指定新闻id的高亮部分,并且将高亮部分设置进入对象中
            Map> map = highlighting.get(result.get("id"));
            List list = map.get("newsAbstract");
            if(null != list && list.size() > 0){
                String newsAbstract = list.get(0);
                news.setNewsAbstract(newsAbstract);
            }
            List list1 = map.get("newsTitle");
            if(null != list1 && list1.size() > 0){
                String newsTitle = list1.get(0);
                news.setNewsTitle(newsTitle);
            }
            newsList.add(news);
         }

//        得到所获得的新闻条数
        long numFound = results.getNumFound();
//        下边是我自己的分页封装,可忽略,上边的到的newslist就是获得的所有新闻
        PageResult result = new PageResult();
        result.setRecordCount(numFound);
        System.out.println(numFound);
        result.setTotalPages((int) (numFound%10 == 0 ? numFound/10 : numFound/10+1));
        result.setList(newsList);
        return result;
    }
}

  

通过上边就能获取到指定的查询对象了,并且高亮显示也正常


推荐阅读
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
author-avatar
奇奇丶承诺
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有