solr的应用(五)多关键字搜索、搜索结果排序、同步索引库

简单初识 Material Point Method(MPM) 简单初识 Material Point Method(MPM):先介绍了Lagrangian和Eulerian,并简单介绍了MPM Method 阅读详情

多关键字搜索处理

在添加条件查询时先对搜索关键字进行替换处理
在这里插入图片描述

String keywords = (String) searchMap.get("keywords");
if (keywords!=null && !"".equals(keywords)){
    searchMap.put("keywords",keywords.replace(" ",""));
}

搜索结果排序

在这里插入图片描述
导入Sort的包如图所示

Sort s = new Sort(sort,sortField);

Sort 的默认构造方法是可以接收多个参数的,即使我们传入了排序方式(DESC或者ASC)和排序字段并没有报错,但是它的排序还是默认排序方式
在这里插入图片描述
所以我们使用下面的构造方法,这个构造方法排序方式是枚举类型的,只能是Sort.Direction类的ASC或DESC
在这里插入图片描述
在这里插入图片描述

String sortField = (String) searchMap.get("sortField");
String sort = (String) searchMap.get("sort");
if (!"".equals(sortField)){
    Sort s = null;
    if (sort.equals("desc")){
        s = new Sort(Sort.Direction.DESC,sortField);
    }else{
        s = new Sort(Sort.Direction.ASC,sortField);
    }
    query.addSort(s);
}

同步索引库

solr数据库的数据信息需要和数据库进行同步

  • 当我们删除商品之后,就需要把索引信息从solr中删除
  • 新增商品,商品审核通过之后,商品信息需要添加到solr中
  • 修改商品时,商品状态为待审核,这个时候就需要先把商品信息从solr中移除,等审核通过后,索引信息就会被同步到索引库

添加索引和删除索引的操作

public void importList(List<TbItem> list) {
    //处理规格格式
    for (TbItem item : list) {
        Map<String,Object> specMap = JSON.parseObject(item.getSpec(), Map.class);//转成map格式
        Map map = new HashMap();//临时map
        for (String key : specMap.keySet()) {
            // 第一个参数:要转换的中文
            // 第二参数:分隔符,没有的话,就写空串
            map.put(Pinyin.toPinyin(key,"").toLowerCase(),specMap.get(key));
        }
        System.out.println(map);
        //给动态域名赋值
        item.setSpecMap(map);
    }
    System.out.println("导入索引到solr");
    solrTemplate.saveBeans(list);
    solrTemplate.commit();
}

@Override
public void deleteByGoodsIds(Long[] goodsId) {
    Query query = new SimpleQuery();
    Criteria criteria = new Criteria("item_goodsid").in(goodsId);
    query.addCriteria(criteria);
    System.out.println("从solr删除索引");
    solrTemplate.delete(query);
    solrTemplate.commit();
}

获取操作的商品列表

public List<TbItem> findItemByGoodsId(Long[] ids, String status) {
	TbItemExample example = new TbItemExample();
	TbItemExample.Criteria criteria = example.createCriteria();
	criteria.andGoodsIdIn(Arrays.asList(ids));
	criteria.andStatusEqualTo(status);
	List<TbItem> items = itemMapper.selectByExample(example);
	return items;
}

商家删除商品

@RequestMapping("/delete")
public Result delete(Long [] ids){
	try {
		goodsService.delete(ids);
		//从solr中删除索引
		searchService.deleteByGoodsIds(ids);
		return new Result(true, "删除成功"); 
	} catch (Exception e) {
		e.printStackTrace();
		return new Result(false, "删除失败");
	}
}

商家修改商品

@RequestMapping("/update")
public Result update(@RequestBody Goods goods){
	//验证商品是否是当前商家的id
	Goods goods2 = goodsService.findOne(goods.getGoods().getId());
	//从spring security中获取商家id
	String sellerId = SecurityContextHolder.getContext().getAuthentication().getName();
	//如果传递过来的商家ID并不是当前登录的用户的ID,则属于非法操作
	if (!goods2.getGoods().getSellerId().equals(sellerId) || !goods.getGoods().getSellerId().equals(sellerId)){
		return new Result(false, "操作非法");
	}
	try {
		goodsService.update(goods);
		//删除索引
		searchService.deleteByGoodsIds(new Long[]{goods.getGoods().getId()});
		return new Result(true, "修改成功");
	} catch (Exception e) {
		e.printStackTrace();
		return new Result(false, "修改失败");
	}
}	

运营商审核商品通过

@RequestMapping("/updateAuditStatus")
public Result updateStatus(Long[] ids,String status){
	try {
		goodsService.updateStatus(ids,status);
		//如果审核成功,将数据同步到索引库
		if ("1".equals(status)){
			List<TbItem> items = goodsService.findItemByGoodsId(ids, status);
			searchService.importList(items);
		}
		return new Result(true,"审核成功");
	}catch (Exception e){
		e.printStackTrace();
		return new Result(false,"审核失败");
	}
}
一次把 PRIV mode 讲透:从 ABAP 内存分配链路到定位与治理 ABAP系统进入PRIV模式的本质是Extended Memory耗尽时转向Heap内存的应急机制。该现象会导致工作进程被独占,系统吞吐量下降。触发条件包括系统EM资源池耗尽或单个用户超过配额阈值。关键参数em/address_space_MB和ztta/roll_extension需协同调整。典型症状包括SM50显示PRIV状态、响应延迟和内存dump。治理需双管齐下:系统侧合理配置内存参数,代码侧优化内存使用模式,如分页处理、减少大内表操作和下推聚合逻辑。PRIV模式应作为异常信号而非常态目标,健康系统 阅读详情

相关推荐

什么是plm系统?-数字化转型网

当今世界,产品研发能力是企业在激烈的市场竞争中保持战略优势的核心竞争力之一。如何有效地缩短产品研发周期、改善产品服务的设计迭代流程、有效降低产品的研发成本,也是企业面临的主要问题之一。PLM(Product Lifecycle Management,产品生命周期管理)在优化产品研发的全管理流程、增强企业产品的市场竞争力方面具有关键的作用。

cxo17757154043的博客 882

Solr完整个性化搜索排序方案

Solr个性化搜索排序A厂的排序方案是添加各种各样的排序链,用于支持各个业务场景下的搜索排序功能,之前我们主搜排序以及筛选页的逻辑非常简单,就是文本相关性+业务分(业务加分+业务扣分),搜索结果干预功能也很直接,这些模块都直接添加在SolrIndexSearcher中,为的是最快的支持搜索排序业务,然后就这么撑了6个月。。。我们发现,用到排序的场景越来越多,比如首页很关键的两个入口:推荐资源和推荐寻

Oliverkehl的专栏 7193

电流采样(分流器与霍尔传感器)

霍尔效应霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hall,1855—1938)于1879年在研究金属的导电机构时发现的。霍尔效应是研究半导体材料性能的基本方法。通过霍尔效应实验测定的霍尔系数,能够判断半导体材料的导电类型、载流子浓度及载流子迁移率等重要参数。简单原理如图1所示,半导体薄片两端通以控制电流I,垂直方向施加磁感应强度为B的匀强磁场,d为半导体材料的厚度,k为霍尔常数,它与半导体材质有关,则在垂直于电流和磁场的方向上,将产生电势差为UH的霍尔电压,它们之间的关系为。霍尔元件。

weixin_48867130的博客 1万+

solr搜索建议

solr建议

jah 8448

Endnote 导入参考文献的时候,格式错误太多了。et.al错误,国标GBT7714在endnote中的详细配置教程,适用于本科,硕士论文文献插入的模板

EndNote插入文献常遇到以下错误主要如下: 等、et al不分; 英文作者全名大写; 期刊名字使用了缩写(图片里没有体现;卷号、期号缺失时出现乱码,多了半个括号;页码范围略去了相同部分;没有悬挂缩进,本文全部解决,全网最细

sakura的博客 3万+

手机流畅的秘密:拆解LPDDR5X在骁龙8 Gen2平台上的电源与信号完整性设计

本文深入解析了LPDDR5X内存与骁龙8 Gen2处理器在旗舰手机中的协同设计,重点探讨了0.5V超低电压下的电源完整性设计以及8.5Gbps高速传输中的信号完整性挑战。通过详细的电源树架构、关键器件选型和布线策略分析,揭示了如何实现高性能与低功耗的完美平衡,为手机流畅体验提供硬件保障。

weixin_30235225的博客 483

Solr学习总结(四)Solr查询参数

今天还是不会涉及到.Net和数据库操作,主要还是总结Solr 的查询参数,还是那句话,只有先明白了solr的基础内容和查询语法,后续学习solr 的C#和数据库操作,都是水到渠成的事。这里先列出solr查询所需要的参数   wiki 地址:http://wiki.apache.org/solr/FrontPage, 里面有各个参数详细的介绍。      一.基本查询   q 查询的关键字,此参数最为重要,例如,q=id:1,默认为q=*:*,   fl 指定返回哪些字段,用逗号或空格分隔,注...

czl689的专栏 507

Synopsys AXI VIP 从环境搭建到首个验证场景运行

本文详细介绍了Synopsys AXI VIP从环境搭建到首个验证场景运行的全过程,包括VIP安装、示例工程生成、验证环境解析、仿真调试技巧及进阶优化。特别针对AXI协议验证中的常见问题提供了实用解决方案,帮助工程师快速掌握这一SoC验证必备工具。

weixin_29185493的博客 340

solr基本语法和关键字使用介绍

一、查询参数说明 在做solr查询的时候,solr提供了很多参数来扩展它自身的强大功能!以下是使用频率最高的一些参数! 1、常用 q-查询字符串,这个是必须的。如果查询所有*:*,根据指定字段查询(Name:张三 AND Address:北京) fq- (filter query)过虑查询,作用:在q查询符合结果中同时是fq查询符合的,例如:q=Name:张三&fq=...

lyf_ldh的博客 5308

保姆级教程:用CellOracle 0.10.13分析你的单细胞数据,从GRN构建到基因扰动模拟

本文详细介绍了如何使用CellOracle 0.10.13进行单细胞数据分析,从基因调控网络(GRN)构建到基因扰动模拟的全流程。通过环境配置、数据准备、GRN构建和扰动模拟等步骤,帮助研究者高效预测细胞命运决定的分子机制,特别针对实际分析中的易错点提供解决方案。

weixin_42525005的博客 436

Streamlit安装避坑指南:从零到一键启动你的第一个数据可视化应用

本文提供了一份详尽的Streamlit安装避坑指南,帮助用户从零开始快速启动第一个数据可视化应用。文章深入剖析了安装过程中常见的网络超时、依赖冲突、环境变量缺失等核心问题,并给出了使用虚拟环境、配置国内镜像源、利用.whl文件离线安装等多种经过验证的解决方案,确保安装过程顺畅无阻。

weixin_29065015的博客 614

Solr---Sort排序

场景描述:        按照业务需求需要进行结果排序,当对数值排序时遇到一些问题。若存的是数字字符串,则进行首字母排序,如2比12大这种情况,所以在创建索引的时候需要制定需要排序的字段为int,如下: &lt;field name="EMR_ORD" type="int" indexed="true" stored="false" multiValued="false"/&gt;

Loading... 4161

【人工智能】AI驱动值班巡检Agent(Hermes)

传统运维值班巡检场景中,存在四大核心痛点:本项目基于 Agent+Skills+浏览器自动化 架构,构建了具备自我进化能力的AI值班员,核心逻辑流如下:

奶爸的编程之路,也就一周冷个三天 177

Solr搜索结果说明

在admin页面,输入相关内容后,会返回xml格式的内容。说明如下: 0 3 on 10 0 monitor 2.2 <!--如果是full interface查询,这里会有得分情况(默认) 0.5

天涯人 3005

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

solr多关键字排序_Solr索引库配置信息

Solr索引库Solr是两部分组成的一部分是web应用,一部分是索引库web应用就是搭建起来的可视化web索引库就是Solr的搜索库,所有的搜索信息都在索引库内,索引库由域组成(可以理解为数据库中表的字段)schema.xml 是用来定义索引数据中的域的,包括域名称,域类型,域是否索引,是否分词,是否存储等等。schema.xml文件的配置项信息如何定义索引库中的 Field<field&g...

weixin_29568097的博客 417

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Solr中的Query Parser是什么,它如何影响搜索结果?

在Solr中,Query Parser(查询解析器)是负责解析用户提交的查询字符串,并将其转换为内部可以理解和执行的形式。不同的查询解析器提供了不同的语法和功能,从而影响搜索结果的生成方式。Solr 提供了多种查询解析器,每种都有其特定的应用场景和优势。

qq_33240556的博客 643

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【SSM项目】电商平台项目第11天——搜索解决方案-Solr 【3】

课程目标 目标1:实现品优购价格区间筛选功能 目标2:实现搜索结果分页功能 目标3:理解多关键字搜索 目标4:实现搜索结果排序功能 目标5:实现隐藏品牌列表功能 目标6:实现搜索页与首页对接功能 目标7:完成更新索引库的功能 1.按价格区间筛选 1.1需求分析 点击搜索面板上的价格区间,实现按价格筛选 1.2前端代码 1.2.1前端控制层 (1)修改pinyougou-search-web的se...

就叫一片白纸的博客 427

solr搜索结果按某字段排序

如果想要搜索结果按某一field排序, 而相同的field情况下匹配度高的优先 1) 使用sort 可见使用sort排序只满足将section=3的排在前面, 但是同样都是section为3的不符合按相似度排序 2) 应该对排序字段加权才是正解

atarik@163.com 6057

解决solr搜索多词匹配度和排序方案

本文主要介绍了在短语、句子、多词查询中,solr在控制查询命中数量、之后再对结果集进行排序。 如何合理的控制solr查询的命中的数量和质量??? 在上篇文章中,提到了两种关于solr 对短语、短句(非关键词)的搜索精度解决方案,solr控制多词联合查询命中的数量。 但是上面解决了返回精度的问题。但是设置mm匹配精度 或者全词匹配defaultOperator=“AND”。df和qf 自定义的排序 就不起作用了。

千丈之松的专栏 3万+

solr多关键字排序_搜索引擎(四)Solr的API接口及查询参数

前面介绍了搜索引擎的基本介绍和安装配置,相信大家对solr有了一定的认识。大家可能要问,讲了这么多,solr到底怎么用,怎么实现索引创建和检索呢,那下面就来说一说Solr 的查询参数,还是那句话,只有先明白了solr的基础内容和查询语法,后续学习solr 的C#和数据库操作,都是水到渠成的事。这里先列出solr查询所需要的参数。wiki 地址:http://wiki.apache.org/solr...

weixin_30873333的博客 366

Solr简单介绍

Solr简单介绍,使用场景

bear_309的博客 1135

solr服务器索引维护,Solr如何管理索引库

描述索引创建和搜索过程1.创建索引举例子:文档一:solr是基于Lucene开发的企业级搜索引擎技术文档二:Solr是一个独立的企业级搜索应用服务器,Solr是一个高性能,基于Lucene的全文搜索服务器首先经过分词器分词,solr会为分词后的结果(词典)创建索引,然后将索引和文档id列表对应起来,如下图所示:比如:solr在文档1和文档2中都有出现,所以对应的文档ID列表中既包含文档1的ID也包...

weixin_34803929的博客 344

品优购电商系统开发----搜索解决方案-Solr 【3】(11)

课程目标 目标1:实现品优购价格区间筛选功能 目标2:实现搜索结果分页功能 目标3:理解多关键字搜索 目标4:实现搜索结果排序功能 目标5:实现隐藏品牌列表功能 目标6:实现搜索页与首页对接功能 目标7:完成更新索引库的功能 1、按价格区间筛选 1.1、需求分析 点击搜索面板上的价格区间,实现按价格筛选 1.2、前端代码 (1)前端控制层 (a)修改pinyougo...

魔法革1996 540

solr做索引时抛出异常_Solr索引库配置信息

Solr索引库Solr是两部分组成的一部分是web应用,一部分是索引库web应用就是搭建起来的可视化web索引库就是Solr的搜索库,所有的搜索信息都在索引库内,索引库由域组成(可以理解为数据库中表的字段)schema.xml 是用来定义索引数据中的域的,包括域名称,域类型,域是否索引,是否分词,是否存储等等。schema.xml文件的配置项信息如何定义索引库中的 Field<field&g...

weixin_39947812的博客 135

solr搜索打分规制排序

 solr使用了Lucene的内核,也继承了Lucene的打分规则,关于Lucene打分规则可以参考如下博客 http://blog.chenlb.com/2009/08/lucene-scoring-architecture.html Solr内改变打分规则有几种形式: 1.配置solr的solrconfig.xml中edismax,来改变Boost打分规则 2.在solr的sch

youmengdaigu的专栏 1219

基于Solr空间搜索

概括:     最近一个项目需要基于LBS查询附近的商铺信息,看了一下网上都是基于Solr和ELS方式来实现, 本来想使用ELS来实现的,但是由于项目以前用的是Solr, 所以就去调研了一下基于Solr来实现地理位置的搜索,并且在实现的时候整理了一下实现的笔记。           在开发中如果需要对带经纬度的数据进行检索,比如查找当前所在位置附近1000米的,一种简单的方法就是:获取数据库中的所

奮鬥徳菜鳥 2983
上一篇: solr的应用(四)商品搜索的过滤查询以及分页显示
下一篇: activeMQ启动失败
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值