美文网首页
Lucene 搜索过程记录

Lucene 搜索过程记录

作者: Ombres | 来源:发表于2019-07-11 19:27 被阅读0次

介绍

今天记录一下Lucene的搜索过程,基于自己的理解吧。

概要

  1. 获取词典及词典的文档号倒排表
  2. 解析Query语句,转为一棵Query查询树
  3. 根据Query构建Weight,用于计算查询权重并构建查询评分器,主要调用IndexSearcher.createWeight(),实际是由Query.createWeight()生成,在不需要评分或在缓存的时候,会添加到缓存。
  4. 构建Scorer,用于对文档集进行评分,主要调用weight.bulkScorer(ctx);
  5. 对文档进行评分 主要调用 scorer.score(leafCollector, ctx.reader().getLiveDocs());
  6. 结果集在Collector中,最终返回结果

记录

  1. 自己写的新的Query需要重写createWeight(),以便生成相应的Weight
  2. Weight中需要重写scorer()等重要的方法,用于进行评分
  3. scorer主要重写 matches()和matchCost()

总的来说Lucene以及帮我们做了大部分工作,根据自己的需要就可以自定义一些查询。比如Elasticsearch的ScriptQuery就是重写了一个createWeight(),scorer()方法返回了一个ConstantScoreWeight。

相关文章

  • Lucene 搜索过程记录

    介绍 今天记录一下Lucene的搜索过程,基于自己的理解吧。 概要 获取词典及词典的文档号倒排表 解析Query语...

  • lucene 学习文章

    记录几个lucene学习中作为参考非常受用的文章Lucene 近实时搜索

  • Lucene搜索

    Lucene搜索的过程是怎样的? 搜索的过程:用户输入、分词、索引搜索、评分(相关性计算)排序,输出列表 Luce...

  • ElasticSearch原理

    es的索引搜索是以lucene为底层的,但是lucene是没有实现分布式,lucene提供了核心的索引和搜索引擎,...

  • 使用nutch搭建类似百度/谷歌的搜索引擎

    Nutch是基于Lucene实现的搜索引擎。包括全文搜索和Web爬虫。Lucene为Nutch提供了文本索引和搜索...

  • 01-Elasticsearch简介

    lucene和elasticsearch的前世今生 lucene,最先进、功能最强大的搜索库,直接基于lucene...

  • Elasticsearch routing功能

    Elasticsearch是一个搭建在Lucene搜索引擎库基础之上的搜索服务平台。它在单机的Lucene搜索引擎...

  • lucene源码分析-搜索过程解析(一)

    1 搜索示例 首先在lucene索引中预先写入了一些文档,主要包含两个field (id和name)信息,每个fi...

  • ElasticSearch核心概念

    Lucene 和 ES 的前世今生 Lucene 是最先进、功能最强大的搜索库。如果直接基于 Lucene 开发,...

  • Lucene--搜索

    Lucene--搜索 一、创建查询对象的方式 对要搜索的信息创建Query查询对象,Lucene会根据Query查...

网友评论

      本文标题:Lucene 搜索过程记录

      本文链接:https://www.haomeiwen.com/subject/ethjkctx.html