Lucene 10.0 BooleanQuery 深度解析:从金融风控到电商搜索的复合查询实战
用户问题原文:如何使用 BooleanQuery 组合多个子查询(AND, OR, NOT)?
本文将系统性拆解 Apache Lucene 10.0 中 BooleanQuery 的设计原理、执行机制、性能调优与生产实践。我们将以 金融风控规则检索场景 为背景——需对千万级规则实现“关键词匹配 + 风险等级过滤 + 排除测试规则”——深入剖析 Lucene 如何通过布尔逻辑组合 TermQuery、RangeQuery、PrefixQuery 等子查询,并避免因错误组合导致的性能退化或结果偏差。
一、问题引入:风控团队的“误报风暴”
某银行反欺诈系统在检索规则时,业务方提出复杂需求:
- 必须包含“跨境”和“高频”;
- 风险等级 ≥4;
- 排除状态为“TEST”的规则。
开发人员直接拼接字符串查询:
// 错误示例!
String queryStr



