云计算平台(检索篇)-Elasticsearch-检索篇

本文详细介绍了ES检索的具体步骤,包括IndexReader打开索引文件、用户输入查询语句、查询语句转换为Query对象树等过程。同时,还阐述了如何通过构造Weight对象树和Scorer对象树来进行词权重计算及文档打分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         ES检索篇主要是对索引中的数据进行查询的一个过程:

1.IndexReader打开索引文件,读取并打开指向索引文件的流。

2.用户输入查询语句

3.将查询语句转换为查询对象Query对象树

4.构造Weight对象树,用于计算词的权重Term Weight,也即计算打分公式中与仅与搜索语句相关与文档无关的部分(红色部分)。

5.构造Scorer对象树,用于计算打分(TermScorer.score())。

6.在构造Scorer对象树的过程中,其叶子节点的TermScorer会将词典和倒排表从索引中读出来。

7.构造SumScorer对象树,其是为了方便合并倒排表对Scorer对象树的从新组织,它的叶子节点仍为TermScorer,包含词典和倒排表。此步将倒排表合并后得到结果文档集,并对结果文档计算打分公式中的蓝色部分。打分公式中的求和符合,并非简单的相加,而是根据子查询倒排表的合并方式(与或非)来对子查询的打分求和,计算出父查询的打分。

8.将收集的结果集合及打分返回给用户

 

具体过程文章已经有很多了,我引用一个博友的文章:

Lucene学习总结之七:Lucene搜索过程解析(1)

http://www.cnblogs.com/forfuture1978/archive/2010/04/04/1704242.html

Lucene学习总结之七:Lucene搜索过程解析(2)

http://www.cnblogs.com/forfuture1978/archive/2010/04/04/1704245.html

Lucene学习总结之七:Lucene搜索过程解析(3)

http://www.cnblogs.com/forfuture1978/archive/2010/04/04/1704250.html

Lucene学习总结之七:Lucene搜索过程解析(4)

http://www.cnblogs.com/forfuture1978/archive/2010/04/04/1704254.html

Lucene学习总结之七:Lucene搜索过程解析(5)

http://www.cnblogs.com/forfuture1978/archive/2010/04/04/1704258.html

Lucene学习总结之七:Lucene搜索过程解析(6)

http://www.cnblogs.com/forfuture1978/archive/2010/04/04/1704263.html

转载于:https://www.cnblogs.com/MrHiFiy/archive/2012/12/06/2806235.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值