elasticsearch 中获得 分词匹配 +(or) 全词模糊匹配 的查询结果(boolQuery)

2023-11-08

 @Override
    public Response selectStructuredDataList(StructuredDataDTO structuredDataDTO) {
        StructuredDataTypeEnum structuredDataTypeEnum = StructuredDataTypeEnum.getByStructuredType(structuredDataDTO.getStructuredType());
        // 是否需要中转到ai库中
        if(structuredDataTypeEnum !=null && structuredDataTypeEnum.isAi()){
                BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
                if(StringUtils.isNotBlank(structuredDataDTO.getStructuredName())) {
                    // 获得分词或者全词模糊匹配的boolQuery
                    boolQueryBuilder.must(getOrBoolQuery("minSymptom", structuredDataDTO.getStructuredName()));
                }
                if (structuredDataTypeEnum.getBiOneClassify() != null) {
                    boolQueryBuilder.must(QueryBuilders.termQuery("oneClassify", structuredDataTypeEnum.getBiOneClassify()));
                }
                if (structuredDataTypeEnum.getBiTwoClassify() != null) {
                    boolQueryBuilder.must(QueryBuilders.termQuery("twoClassify", structuredDataTypeEnum.getBiTwoClassify()));
                }
            // 现在只取最大500条(20200415 迪迪确认)
            return Response.ok(getBiStructuredDataList(boolQueryBuilder, 0, 500));
        }
        // 中医证型
        if(StructuredDataTypeEnum.SYNDROME_TCM.getStructuredType().equals(structuredDataDTO.getStructuredType())){
            return Response.ok(getBiTypeSyndromeWordList(getOrBoolQuery("zx", structuredDataDTO.getStructuredName()), 0, 500));
        }

        // 中医病名
        if(StructuredDataTypeEnum.CHINESE_DISEASE_NAME.getStructuredType().equals(structuredDataDTO.getStructuredType())){
            return Response.ok(getBiStandardNameLibraryNewList(getOrBoolQuery("bm", structuredDataDTO.getStructuredName()), 0, 500));
        }


        QueryWrapper<StructuredData> queryWrapper = new QueryWrapper<>();
        if (!ObjectUtil.objectIsNull(structuredDataDTO.getStructuredName())) {
            queryWrapper.like("structured_name", structuredDataDTO.getStructuredName());
        }
        queryWrapper.eq("structured_type", structuredDataDTO.getStructuredType());
        queryWrapper.eq("is_deleted", 1);
        List<StructuredData> tongues = structuredDataMapper.selectList(queryWrapper);
        logger.info("舌像数据返回参数:tongues {}", JSON.toJSONString(tongues));
        return Response.ok(tongues);
    }

    /**
     * 获得分词或者全词模糊匹配的boolQuery
     * @param fieldName
     * @param value
     * @return
     */
    private BoolQueryBuilder getOrBoolQuery(String fieldName, String value){
        BoolQueryBuilder boolQueryBuilderTwo = QueryBuilders.boolQuery();
        // 分词
        boolQueryBuilderTwo.should(new MatchQueryBuilder(fieldName, value));
        // 全词模糊匹配
        boolQueryBuilderTwo.should(new WildcardQueryBuilder(fieldName, "*" + value + "*"));
        return boolQueryBuilderTwo;
    }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

elasticsearch 中获得 分词匹配 +(or) 全词模糊匹配 的查询结果(boolQuery) 的相关文章

随机推荐

  • Jira插件安装

    一 Jira插件列表 可以将下面免费插件直接下载 然后登陆jira 在 插件管理 gt 上传插件 将下载后的免费插件直接进行上传安装即可 序号 插件名称 功能概要 供应商 资源 100用户报价 1 GreenHopper 敏捷项目管理 At
  • elasticsearch集群正确关闭、重启方式

    问题原因 在elasticsearch集群中 当集群发现某个节点关闭时 将延迟一分钟后 默认 再开始将该节点上的分片复制到集群中的其他节点 这可能涉及很多I O 由于该节点不久将要重新启动 因此该I O是不必要的 您可以通过在关闭节点之前禁
  • 【博客705】chatgpt:编写日志rotate框架

    chatgpt 编写日志rotate框架 场景 我们的网关服务等为了持久化日志以供排查问题 往往将日志输出到文件 此时如果文件太大 可能导致磁盘被写满 此时就需要对日志文件进行rotate 以保存最新的日志 实现 package main
  • Pytorch中计算自己模型的FLOPs

    转自 Pytorch中计算自己模型的FLOPs thop profile 方法 yolov5s 网络模型参数量 计算量统计 墨理学AI CSDN博客 Pytorch 用thop计算pytorch模型的FLOPs 简书 安装thop pip
  • gcc/gdb/gprof/gcov/valgrind使用

    gcc gdb gprof gcov valgrind使用 ning 发表于 2012年10月05日 23 44 Hits 796 Tag all Table of Contents gcc编译带符号 gdb 启动参数 gdb 查看结构体
  • Blender基础:几何节点修改器

    1 几何节点修改器 几何节点修改器Geometry Node Editor 本质上一种自定义修改器 2 节点的添加 添加节点 节点Node 代表一个函数 功能 演示 添加一个节点 几何数据 变换 连接端口 修改节点的参数 几何节点修改器 是
  • ssh端口转发禁用

    配置1 vi etc ssh sshd config 修改内容 AllowTcpForwarding yes GatewayPorts yes 生效 etc rc d init d sshd restart 配置2 vi etc sysct
  • react中使用useMemo和useCallback

    之前学到的memo是用来优化函数组件的重渲染问题 当传入的属性值都没变化时就不会触发组件的重渲染 否则组件就会重渲染 和类组件中的PureComponent组件是类似 useMemo功能是判断组件中的函数逻辑是否重新执行 用来优化性能 im
  • LUA中的and与or

    逻辑运算符认为false和nil是假 false 其他为真 0也是true and的优先级比or高 其它语言中的and表示两者都为真的时候 才返回为真 而只要有一个假 都返回假 lua虽不仅返回假的语义 还返回导致假的值 也就是说 a an
  • webbench 压力测试软件

    1 安装 wget http home tiscali cz cz210552 distfiles webbench 1 5 tar gz tar xzvf webbench 1 5 tar gz cd webbench 1 5 make
  • Ubuntu Linux输入法fcitx方块乱码解决设置

    Ubuntu Linux 10 04自带的输入法不是很好用 linux下的输入法和windows下的比起来还是有很大差距的 相对来说比较好的输入法我看还是fcitx还不 错 不过在Ubuntu下通过 sudo apt get install
  • java 接口返回json数据封装

    前言 首先 采用的是springboot 在controller中使用了 RestController或者 ResponseBody注解 返回的数据本身就是json格式 但是这样的json串在前后端分离使用中并不满足实际的效果 因此需要进行
  • 18. Python中的模块与包

    Hi 大家好 我是茶桁 这一段Python之旅怎么样 还算顺利吧 之前我们都学习了些什么 有基本常识 流程 函数 不同类型的数据以及一些模块对吧 并且还做了一些练习来巩固所学过的内容 那么今天 我们接着来学习模块 不过今天要学的模块和以往不
  • IPP图像处理常用函数说明

    IPP图像处理常用函数 专栏目录 说明 一 阈值处理 1 函数原型 2 计算公式 3 Threshold Val函数 1 函数原型 2 说明 4 相关参数含义 1 源图像指针和步长 2 roiSize 3 ippCmpOp 5 官网开发手册
  • mysql日期和字符串相互转化

    一 日期转字符串 1 函数 date format date format 2 例 select date format now Y m d H i S 结果 2017 10 29 14 02 54 select date format n
  • C++成员函数指针的定义与使用

    成员函数指针是相对于对象来说的 在说成员函数指针之前 先要明白普通函数指针的定义与使用 用vs先建立一个项目 名称随意 然后在源文件中声明并且定义一个函数 代码如下 include pch h include
  • uboot简介

    1 嵌入式Linux软件结构与分布 在一般情况下嵌入式Linux系统中的软件主要分为以下及部分 1 引导加载程序 其中包括内部ROM中的固化启动代码和Boot Loader两部分 而这个内部固化ROM是厂家在芯片生产时候固化的 作用基本上是
  • CUDA学习笔记(5) 原子操作

    原子操作是指 当一个线程 Thread 要对同一个显存变量依次进行 读 计算 写 的操作时 这个 读 计算 写 的操作必须连贯地执行 中间不能插入任何其他操作 举个例子 假设我们想要用GPU统计 char data 0 32 1 0 1 这
  • 数学建模—降维—主成分分析(PCA)

    清风数学建模笔记 可用python或者matlab实现 主成分分析是一种降维算法 它能将多个指标转换为少数几个主成分 这些主成分是原始变量的线性组合 且彼此之间互不相关 且能反映出原始数据的大部分信息 一般来说 当研究的问题涉及到多变量且变
  • elasticsearch 中获得 分词匹配 +(or) 全词模糊匹配 的查询结果(boolQuery)

    Override public Response selectStructuredDataList StructuredDataDTO structuredDataDTO StructuredDataTypeEnum structuredD