当前位置: 首页 > news >正文

【lucene】SpanNotQuery 存在的意义

SpanNotQuery 存在的意义就是:

在“词的位置”这一更细粒度上做布尔运算,而不仅仅在“文档”级别做 AND/OR/NOT。

它让 Lucene 从“文档检索”升级到“短语/区间检索”,满足更复杂的业务需求。 啥意思?

把它拆成三层,你就明白了:

1. 传统 BooleanQuery(文档级)

   只能告诉你:

   “这篇文档里同时有 apple 和 pie。”

   至于这两个词在文档里相距多远、谁先谁后,它完全不知道。  

   举例:  

   - 文档 A:“I like apple and pie.” → 命中  

   - 文档 B:“apple …(隔 500 词)… pie.” → 也命中

   你无法区分 A、B 的差异。

2. SpanQuery(区间级)

   把“文档”再往下拆成“词的位置区间”,于是可以问:

   “在这篇文档里,apple 和 pie 挨得不超过 3 个词。”

   这就是 SpanNearQuery。  

   此时:  

   - 文档 A 会给出一段区间 `[apple, pie]`;  

   - 文档 B 因为距离太远,没有任何区间满足,文档就不被命中。

3. SpanNotQuery(区间级布尔运算)

   在区间上再做“减法”:

   “先把 所有出现 apple 的区间 拿出来,但如果这段 apple 被 ‘apple … pie 且距离≤3’ 的区间罩住,就整段扔掉。”  

   结果:  

   - 文档 A 的 apple 被“剪掉”,于是这篇文档不会被返回;  

   - 文档 C:“I like apple cake.” 里的 apple 没被罩住,就被保留,文档返回。

一句话类比  

- BooleanQuery 像“整本书”级别的标签:这本书贴了“apple”和“pie”两张标签。  

- SpanQuery 像“页码”级别的标签:第 12 页第 3 行到第 5 行是 “apple pie”。  

- SpanNotQuery 像用剪刀把某几页里不想保留的段落裁掉,只把剩余段落还给读者。

因此,“升级”指的是:

从 “整本书要不要” → “把书里具体几行裁掉或保留”,粒度细得多,能满足“邻近/排除/精准高亮”等更复杂的搜索需求。

http://www.xdnf.cn/news/1368505.html

相关文章:

  • 国产化Excel开发组件Spire.XLS教程:Python 读取 CSV 文件,从基础到进阶指南
  • 一文看懂@Bean注解的原理
  • 【C++】用哈希表封装实现unordered_set和unordered_map
  • Ubuntu 操作系统
  • 自动化测试概念与 Web 自动化实战(基于 Selenium)
  • Tensor常见操作
  • pycharm 远程连接服务器报错
  • Java基础第二课:hello word
  • 160.在 Vue3 中用 OpenLayers 解决国内 OpenStreetMap 地图加载不出来的问题
  • 从行业智能体到一站式开发平台,移动云推动AI智能体规模化落地
  • Windows 命令行:mkdir 命令
  • 三菱FX5U PLC访问字变量的某一位
  • Elasticsearch精准匹配与全文检索对比
  • 如何从零开始学习黑客技术?网络安全入门指南
  • 读《精益数据分析》:用户行为热力图
  • 【算法--链表题2】19.删除链表的倒数第 N 个节点:通俗详解
  • 腾讯开源OpenTenBase深度实践:企业级分布式HTAP数据库部署全攻略
  • Qt数据结构与编码技巧全解析
  • Spring - 文件上传与下载:真正的企业开发高频需求——Spring Boot文件上传与下载全场景实践指南
  • 基于stm32的物联网OneNet火灾报警系统
  • 支持向量机(SVM)内容概述
  • Hive高阶函数之行转列JSON数据解析
  • uniapp 引入使用u-view 完整步骤,u-view 样式不生效
  • 要闻集锦|阿里官网调整为四大业务板块;华为云重组多个事业部涉及上千人;群核科技在港交所更新招股书
  • 开源 python 应用 开发(十三)AI应用--百度智能云TTS语音合成
  • vscode 配置 + androidStudio配置
  • uniapp 自动升级-uni-upgrade-center
  • 复盘一个诡异的Bug之FileNotFoundException
  • 【实时Linux实战系列】实时信号处理在通信中的应用
  • leetcode-python-383赎金信