首页 > 其他分享 >Spring Data Elasticsearch 自定义检索字段比重,计算得分

Spring Data Elasticsearch 自定义检索字段比重,计算得分

时间:2024-03-19 11:12:38浏览次数:12  
标签:自定义 Spring fuzzyQuery should mfieldsBoosts Elasticsearch put getFuzzyQuery Query

       BoolQueryBuilder fuzzyQuery = QueryBuilders.boolQuery();
            String[] matchFieldNames = {"itemName", "categoryNames", "baseCategoryName", "materialNameAilas",
                "materialName", "supplierNames", "attributeNames", "attributeNamesAilas", "attributeValueNames"};
            MultiMatchQueryBuilder multiMatchQueryBuilder =
                QueryBuilders.multiMatchQuery(paramsDto.getFuzzyQuery(), matchFieldNames)
                    .type(MultiMatchQueryBuilder.Type.BEST_FIELDS);
            // 设置权重
            Map<String, Float> mfieldsBoosts = new HashMap<>();
            mfieldsBoosts.put("itemName", 11f);
            mfieldsBoosts.put("categoryNames", 6f);
            mfieldsBoosts.put("baseCategoryName", 5f);
            mfieldsBoosts.put("materialNameAilas", 9f);
            mfieldsBoosts.put("materialName", 10f);
            mfieldsBoosts.put("supplierNames", 4f);
            mfieldsBoosts.put("attributeNames", 8f);
            mfieldsBoosts.put("attributeNamesAilas", 7f);
            mfieldsBoosts.put("attributeValueNames", 3f);
            multiMatchQueryBuilder.fields(mfieldsBoosts);
            fuzzyQuery.should(multiMatchQueryBuilder)
                .should(QueryBuilders.wildcardQuery("itemSkuCodes", "*" + paramsDto.getFuzzyQuery() + "*"))
                .should(QueryBuilders.wildcardQuery("itemSkuModels", "*" + paramsDto.getFuzzyQuery() + "*"));
            filter.must(fuzzyQuery);

 

这样就可以根据字段权重计算得分,进行查询结果排序

标签:自定义,Spring,fuzzyQuery,should,mfieldsBoosts,Elasticsearch,put,getFuzzyQuery,Query
From: https://www.cnblogs.com/xiaoxiaoxingkong/p/18082316

相关文章

  • 解决CORS错误(Spring Boot)
    前言跨域(Cross-Origin)是指在Web开发中,当一个Web应用试图从一个源(域名、协议、端口组合)获取资源时,该请求的目标与当前页面的源不同。具体来说,当一个页面的JavaScript代码尝试向不同域名、协议或端口的服务器发送请求时,就会发生跨域请求。跨域请求是由浏览器实施的同源策略(Same-Ori......
  • ElasticSearch - 基础概念和映射
    前言写这篇东西,是因为官方文档看着太痛苦,于是乎想用大白话来聊聊ElasticSearc(下面都简称ES)。所以下文对于ES一些概念的表述可能会与官方有出入,所以需要准确的表述和详细定义的,请跳转官方文档。我也尽量贴上官方的链接。前置知识:因为下文会使用mysql的一些概念来描述,所以......
  • SpringBoot集成MybatisPlus
    创建一个基于SpringBoot集成MybatisPlus的示例项目是一个相对直接且实用的过程,它结合了SpringBoot的自动配置特性与MybatisPlus的增强功能,使得数据库操作变得更为简便和高效。下面是一个简单的步骤说明和代码示例,帮助你快速搭建一个SpringBoot集成MybatisPlus的Demo项......
  • Vue2(五):收集表单数据、过滤器、自定义指令、Vue的生命周期
    一、收集表单数据爱好:学习<inputtype="checkbox"value="study"v-model="hobby">打游戏<inputtype="checkbox"value="games"v-model="hobby">吃饭<inputtype="checkbo......
  • JAVA实战开源项目:农村物流配送系统(Vue+SpringBoot)
    目录一、摘要1.1项目介绍1.2项目录屏二、功能模块2.1系统登录、注册界面2.2系统功能2.2.1快递信息管理:2.2.2位置信息管理:2.2.3配送人员分配:2.2.4路线规划:2.2.5个人中心:2.2.6退换快递处理:2.2.7客户评价:三、系统展示四、核心代码4.1查询商家4.2退换快递4......
  • JAVA实战开源项目:城市桥梁道路管理系统(Vue+SpringBoot)
    目录一、摘要1.1项目介绍1.2项目录屏二、功能模块三、系统展示四、核心代码4.1查询城市桥梁4.2新增城市桥梁4.3编辑城市桥梁4.4删除城市桥梁4.5查询单个城市桥梁五、免责说明一、摘要1.1项目介绍基于Vue+SpringBoot+MySQL的城市桥梁道路管理系统,支持管......
  • EasyExcel实现文件上传下载(百万级数据、单元格自定义样式)
    文章目录一、EasyExcel介绍二、写Excel1、最简单的写2、列宽、行高、背景颜色、字体大小颜色、对齐方式2.1、编码方式2.2、注解方式3、复杂头与修改列顺序4、日期、数字类型和自定义格式化5、设置单元格下拉6、重复多次写入(百万数据)7、导出指定列8、动态生成表头9、模......
  • Java_EE企业级开发学习笔记——spring学习笔记第一章
    记录笔记。一.Spring介绍Spring是以IOC(控制反转)和AOP(面向切面编程)为内核的一个轻量级开源框架。二.Spring框架的优点1.非侵入设计使得应用程序对框架的依赖最小化。2.方便解耦对象的创建和依赖关系的维护都由Spring容器管理。......
  • spring boot企业级开发教程学习笔记——第一章
    记录笔记。一.spring和springboot简介Springboot之前是spring,Spring是一个轻量开源框架,通过控制反转(IOC)和面向切面编程(AOP)取代了低效臃肿的开发模式。但是spring需要配置各种XML配置文件,只有少量的注解。springboot框架本身并不提供Sprng框架的核心特性以......
  • 微信小程序自定义组件
    微信小程序中的自定义组件是指在微信小程序中创建的可重用的、可复用的组件,它可以被多个页面使用。自定义组件可以帮助我们提高开发效率,提高代码的可维护性和可重用性。以下是微信小程序中自定义组件的使用方法:一.创建自定义组件首先,我们需要在微信小程序中创建一个自定......