solr的搜索应用

solr的高亮搜索

步骤:
1.获取搜索的关键字
String keywords = (String) searchMap.get("keywords");	

2.根据关键字进行查询
	Criteria criteria = new Criteria("item_keywords");
        criteria.contains(keywords);
        query.addCriteria(criteria);
      
3.高亮搜索设置
HighlightOptions options = new HighlightOptions(); // 声明高亮选项
		options.addField("item_title"); // 设置需要高亮的域
		options.setSimplePrefix("<em style='color:red'>"); // 高亮头部
		options.setSimplePostfix("</em>"); // 高亮尾部
		SimpleHighlightQuery query = new SimpleHighlightQuery();
		query.setHighlightOptions(options);
		
4.增加过滤条件
 String category = (String) searchMap.get("category");	//获取过滤条件的关键字
            if (category != null && category.trim().length() > 0) {	
                Criteria qcriteria = new Criteria("item_category");	// 过滤item_category这个域
                qcriteria.contains(category);					// 域里包含过滤关键字
                SimpleFilterQuery filterQuery = new SimpleFilterQuery(qcriteria);
                query.addFilterQuery(filterQuery);
                System.out.println("添加了分类过滤"+category);
            }

5.升降序查询
        String sortStr = (String) searchMap.get("sort");		// 获取升降排序 的关键字
        if ("ASC".equals(sortStr)) {
            Sort orders = new Sort(Sort.Direction.ASC, "item_price");	// 根据item_price升序排序
            query.addSort(orders);
        } else {
            Sort orders = new Sort(Sort.Direction.DESC, "item_price");	//  根据item_price降序排序
            query.addSort(orders);
        }

6. 分页
        Integer pageNo  = (Integer) searchMap.get("pageNo");	//从前端获取传来的页码数
        Integer PageSize = (Integer) searchMap.get("pageSize");	// 获取前端传来的每页几条数据
        query.setOffset((pageNo-1)*PageSize);   // 从第几条记录开始查询	
        query.setRows(PageSize);    // 每页查询几条

7. 通过高亮进行查询
        HighlightPage<TbItem> page = solrTemplate.queryForHighlightPage(query, TbItem.class);  // 一定要在封装查询关键字和设置过滤关键字后查询。
        List <TbItem> returnItems = page.getContent();		// 查询的结果封装为一个list集合
8. 获取封装的高亮的数据,设置item_title高亮
 for (TbItem item : returnItems) {
            //一定要判断当前的集合不为空,否则会崩
            if(page.getHighlights(item)!=null && page.getHighlights(item).size() > 0){
                List<HighlightEntry.Highlight> highlights = page.getHighlights(item);
                HighlightEntry.Highlight highlight = highlights.get(0);
                List<String> snipplets = highlight.getSnipplets();
                if(snipplets!=null && snipplets.size() > 0){
                    item.setTitle(snipplets.get(0)); //将前后修饰的高亮内容再次封装回item的title中
                }
            }
        }
        
  9.返回数据到前端
  Map returnMap  = new HashMap<>();
    returnMap.put("content", returnItems);
        //需要封装总页数
        returnMap.put("total", page.getTotalElements());//设置返回值中的总记录数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值