Lucene的查询过程

简介: Lucene的查询过程

  在Lucene的查询过程中的主要检索方式有以下四种。

  1. 单个词查询

   指对一个Term进行查询。比如,若要查找包含字符串“lucene”的文档,则只需在词典中找到Term“lucene”,再获得在倒排表中对应的文档链表即可。

  2. AND

   指对多个集合求交集。比如,若要查找既包含字符串“lucene”又包含字符串“solr”的文档,则查找步骤如下。

   (1)在词典中找到Term “lucene”,得到“lucene”对应的文档链表。

   (2)在词典中找到Term “solr”,得到“solr”对应的文档链表。

   (3)合并链表,对两个文档链表做交集运算,合并后的结果既包含“lucene”也包含“solr”。

  3. OR

   指多个集合求并集。比如,若要查找包含字符串“luence”或者包含字符串“solr”的文档,则查找步骤如下。

   (1)在词典中找到Term “lucene”,得到“lucene”对应的文档链表。

   (2)在词典中找到Term “solr”,得到“solr”对应的文档链表。

   (3)合并链表,对两个文档链表做并集运算,合并后的结果包含“lucene”或者包含“solr”。

  4. NOT

   指对多个集合求差集。比如,若要查找包含字符串“solr”但不包含字符串“lucene”的文档,则查找步骤如下。

   (1)在词典中找到Term “lucene”,得到“lucene”对应的文档链表。

   (2)在词典中找到Term “solr”,得到“solr”对应的文档链表。

   (3)合并链表,对两个文档链表做差集运算,用包含“solr”的文档集减去包含“lucene”的文档集,运算后的结果就是包含“solr”但不包含“lucene”。

   通过上述四种查询方式,我们不难发现,由于Lucene是以倒排表的形式存储的,所以在Lucene的查找过程中只需在词典中找到这些Term,根据Term获得文档链表,然后根据具体的查询条件对链表进行交、并、差等操作,就可以准确地查到我们想要的结果,相对于在关系型数据库中的“like”查找要做全表扫描来说,这种思路是非常高效的。虽然在索引创建时要做很多工作,但这种一次生成、多次使用的思路也是非常高明的。

  

目录
相关文章
|
11月前
|
存储 算法 数据挖掘
重磅发布 | OpenSearch推出向量检索GPU图算法方案并支持GPU规格售卖
OpenSearch向量检索版推出了面向企业开发者的GPU图算法方案(CAGRA算法),支持客户直接购买GPU规格节点,是国内首家支持GPU规格的向量检索产品。
850 12
|
自动驾驶 物联网 5G
什么是 5G 以及它如何工作?
【8月更文挑战第23天】
2916 0
|
弹性计算 缓存 搜索推荐
大数据个性化推荐,AWS终端用户解决方案
大数据个性化推荐,AWS终端用户解决方案
|
物联网 5G SDN
5G 网络架构全解析:RAN、核心网和接入网
5G 网络架构全解析:RAN、核心网和接入网
3443 8
|
数据处理
正则表达式详解:解析星号的含义
【4月更文挑战第3天】
2114 1
正则表达式详解:解析星号的含义
|
缓存 网络协议 网络性能优化
计算机网络—传输层-tcp、udp协议详解
计算机网络—传输层-tcp、udp协议详解
|
机器学习/深度学习 存储 搜索推荐
可能是推荐系统最详细且简单的入门教程
本文将深入介绍推荐系统的工作原理,和其中涉及的各种推荐机制,以及它们各自的优缺点和适用场景,帮助用户清楚的了解和快速构建适合自己的推荐系统。
2774 0
可能是推荐系统最详细且简单的入门教程
|
测试技术 索引
Elasticsearch咱们单节点数据量多大?
Elasticsearch咱们单节点数据量多大?
508 3
|
存储 缓存 自然语言处理
Elasticsearch中FST与前缀搜索
Elasticsearch中FST与前缀搜索
359 0
|
移动开发 Go
GO 利用bufio包(流式操作) - 并发写文件/读文件示例
GO 利用bufio包(流式操作) - 并发写文件/读文件示例
962 0
GO 利用bufio包(流式操作) - 并发写文件/读文件示例

热门文章

最新文章