BoolQueryBuilder 如何进行模糊查询 并且模糊过滤去除name为Ab的 【4月更文挑战第2天】

简介: 如果你想使用 BoolQueryBuilder 进行模糊查询,并且要排除那些 name 字段为特定值(如 "Ab")的文档,你可以使用 must_not 子句与 FuzzyQueryBuilder 和 TermQueryBuilder 组合。以下是如何在 Elasticsearch 中实现这一需求的示例:Java代码实现假设你想对字段 description 进行模糊查询,并确保排除 name 字段为 "Ab" 的文档:javaCopy codeimport org.elasticsearch.index.query.BoolQueryBuilder;import org.e

如果你想使用 BoolQueryBuilder 进行模糊查询,并且要排除那些 name 字段为特定值(如 "Ab")的文档,你可以使用 must_not 子句与 FuzzyQueryBuilder 和 TermQueryBuilder 组合。以下是如何在 Elasticsearch 中实现这一需求的示例:

Java代码实现
假设你想对字段 description 进行模糊查询,并确保排除 name 字段为 "Ab" 的文档:

java

Copy code
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;

// 创建 BoolQueryBuilder
BoolQueryBuilder boolQuery = QueryBuilders.boolQuery();

// 添加模糊查询
FuzzyQueryBuilder fuzzyQuery = QueryBuilders.fuzzyQuery("description", "searchTerm")
.fuzziness(Fuzziness.AUTO); // 自动设置模糊度
boolQuery.must(fuzzyQuery);

// 添加模糊排除过滤
TermQueryBuilder termQuery = QueryBuilders.termQuery("name.keyword", "Ab");
boolQuery.mustNot(termQuery); // 使用 mustNot 来排除具有特定 'name' 值的文档

// 执行查询
SearchResponse response = client.prepareSearch("your_index")
.setQuery(boolQuery)
.get();
代码解释
模糊查询 (FuzzyQueryBuilder): 对 description 字段应用模糊查询,可以捕获与 searchTerm 近似的词条。

排除特定字段值 (TermQueryBuilder): 使用 mustNot 子句结合 TermQueryBuilder 来排除那些 name 字段为 "Ab" 的文档。注意这里使用的是 name.keyword,这是假设 name 字段在映射中有一个未分词的 keyword 类型。如果没有,需要确认字段的确切映射类型。

组合查询 (BoolQueryBuilder): must 子句用来包含必须满足的模糊查询条件,而 mustNot 子句用于排除不想要的匹配条件。

通过上述设置,查询将返回那些 description 字段内容与 searchTerm 模糊匹配但 name 字段不是 "Ab" 的文档。这种查询可以有效地同时满足模糊搜索需求和特定排除条件。

相关文章
|
自然语言处理 索引
ES 匹配多个搜索条件和精确查询
ES 匹配多个搜索条件和精确查询
|
9月前
|
人工智能 自然语言处理 算法
Similarities:精准相似度计算与语义匹配搜索工具包,多维度实现多种算法,覆盖文本、图像等领域,支持文搜、图搜文、图搜图匹配搜索
Similarities:精准相似度计算与语义匹配搜索工具包,多维度实现多种算法,覆盖文本、图像等领域,支持文搜、图搜文、图搜图匹配搜索
Similarities:精准相似度计算与语义匹配搜索工具包,多维度实现多种算法,覆盖文本、图像等领域,支持文搜、图搜文、图搜图匹配搜索
|
SQL 存储 前端开发
MySQL模糊查询 先展示精确查询在展示模糊查询结果 | 结果按匹配度 排序
MySQL模糊查询 先展示精确查询在展示模糊查询结果 | 结果按匹配度 排序
548 0
|
算法 固态存储
分别使用SAD匹配,NCC匹配,SSD匹配三种算法提取双目图像的深度信息
分别使用SAD匹配,NCC匹配,SSD匹配三种算法提取双目图像的深度信息
115 0
分别使用SAD匹配,NCC匹配,SSD匹配三种算法提取双目图像的深度信息
|
自然语言处理 Java
如何使用ES更有效率的进行多字段模糊匹配
如何使用ES更有效率的进行多字段模糊匹配
|
JavaScript 前端开发 API
全文检索与高亮关键词匹配,用replace就够了
全文关键词检索高亮,这个在业务中常有的功能,比如浏览器默认就有个功能,关键词搜索就会匹配你检索的文字,并且会给你高亮,这是怎么实现的呢?
229 0
全文检索与高亮关键词匹配,用replace就够了
|
存储 SQL 人工智能
4 PostgreSQL 索引,全文检索,模糊匹配,近似度匹配(三)
4 PostgreSQL 索引,全文检索,模糊匹配,近似度匹配(三)
912 1
4 PostgreSQL 索引,全文检索,模糊匹配,近似度匹配(三)
|
SQL 存储 关系型数据库
4 PostgreSQL 索引,全文检索,模糊匹配,近似度匹配(二)
4 PostgreSQL 索引,全文检索,模糊匹配,近似度匹配(二)
230 0
4 PostgreSQL 索引,全文检索,模糊匹配,近似度匹配(二)
|
SQL 存储 缓存
4 PostgreSQL 索引,全文检索,模糊匹配,近似度匹配(一)
4 PostgreSQL 索引,全文检索,模糊匹配,近似度匹配(一)
183 0
|
机器学习/深度学习 算法 测试技术
686. 重复叠加字符串匹配 : 综合字符串匹配面试题
686. 重复叠加字符串匹配 : 综合字符串匹配面试题