zoukankan      html  css  js  c++  java
  • Lucene学习总结之七:Lucene搜索过程解析(1)

    一、Lucene搜索过程总论

    搜索的过程总的来说就是将词典及倒排表信息从索引中读出来,根据用户输入的查询语句合并倒排表,得到结果文档集并对文档进行打分的过程。

    其可用如下图示:

    searchprocess_thumb6

    总共包括以下几个过程:

    1. IndexReader打开索引文件,读取并打开指向索引文件的流。
    2. 用户输入查询语句
    3. 将查询语句转换为查询对象Query对象树
    4. 构造Weight对象树,用于计算词的权重Term Weight,也即计算打分公式中与仅与搜索语句相关与文档无关的部分(红色部分)。
    5. 构造Scorer对象树,用于计算打分(TermScorer.score())。
    6. 在构造Scorer对象树的过程中,其叶子节点的TermScorer会将词典和倒排表从索引中读出来。
    7. 构造SumScorer对象树,其是为了方便合并倒排表对Scorer对象树的从新组织,它的叶子节点仍为TermScorer,包含词典和倒排表。此步将倒排表合并后得到结果文档集,并对结果文档计算打分公式中的蓝色部分。打分公式中的求和符合,并非简单的相加,而是根据子查询倒排表的合并方式(与或非)来对子查询的打分求和,计算出父查询的打分。
    8. 将收集的结果集合及打分返回给用户。
  • 相关阅读:
    nginx公网IP无法访问浏览器
    Internet接入方式
    Adobe Photoshop Lightroom 5.3和序列号
    getopt
    printf
    scanf
    cycling -avoid the vicious cycle
    ACE handle_timeout 事件重入
    Linux查看程序端口占用
    The GNU C Library
  • 原文地址:https://www.cnblogs.com/forfuture1978/p/1704242.html
Copyright © 2011-2022 走看看