lucene002_总体框架

lucene只是一个负责全文检索的库,仅仅支持纯文本的搜索和索引。

lucene的全过程包含索引创建和检索两个部分。

  • 被索引的文档用Document对象表示。
  • IndexWriter通过函数addDocument将文档添加到索引中,实现创建索引的过程。
  • Lucene的索引是应用反向索引。
  • 当用户有请求时,Query代表用户的查询语句。
  • IndexSearcher通过函数search搜索Lucene Index
  • IndexSearcher计算term weight和score并且将结果返回给用户。
  • 返回给用户的文档集合用TopDocsCollector表示。

详细到对Lucene API 的调用实现索引和搜索过程:

  • 索引过程如下:

    • 创建一个IndexWriter用来写索引文件,它有几个参数,INDEX_DIR就是索引文件所存放的位置,Analyzer便是用来对文档进行词法分析和语言处理的。
    • 创建一个Document代表我们要索引的文档。
    • 将不同的Field加入到文档中。我们知道,一篇文档有多种信息,如题目,作者,修改时间,内容等。不同类型的信息用不同的Field来表示,在本例子中,一共有两类信息进行了索引,一个是文件路径,一个是文件内容。其中FileReader的SRC_FILE就表示要索引的源文件。
    • IndexWriter调用函数addDocument将索引写到索引文件夹中。
  • 搜索过程如下:
    • IndexReader将磁盘上的索引信息读入到内存,INDEX_DIR就是索引文件存放的位置。
    • 创建IndexSearcher准备进行搜索。
    • 创建Analyer用来对查询语句进行词法分析和语言处理。
    • 创建QueryParser用来对查询语句进行语法分析。
    • QueryParser调用parser进行语法分析,形成查询语法树,放到Query中。
    • IndexSearcher调用search对查询语法树Query进行搜索,得到结果TopScoreDocCollector
时间: 2024-10-24 01:18:03

lucene002_总体框架的相关文章

JDK源码分析之集合01总体框架

集合类是java提供的工具类,主要包括List.Set.Map和vector等类型.所有的集合相关类都位于java.util.*内. 集合类的总体框架图如下图所示: 对总体框架的说明: 集合框架中最顶层的接口有Iterator.Collection和Map三个.其中Itireator是所有迭代器需要实现的接口,Collection是所有的线性结构集合所要实现的接口,Map是所有的非线性集合所要实现的接口,元素以Key.value的形式保存. Collection下层中包含了Queue.List和

Java 集合系列 01 总体框架

java 集合系列目录: Java 集合系列 01 总体框架 Java 集合系列 02 Collection架构 Java 集合系列 03 ArrayList详细介绍(源码解析)和使用示例 Java 集合系列 04 LinkedList详细介绍(源码解析)和使用示例 Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.Java集合工具包位置是java.util.*Java集合主要可以划分为4个部分:List列表.Set集合.Map映射.工具类(Itera

(转)Java 集合系列01之 总体框架

之前多次翻阅,非常麻烦,记录下来. 下面总结来自 http://www.cnblogs.com/skywang12345/,转载要注意! 总体框架 主干是Collection和Map 1 (01) List是一个有序的队列,每一个元素都有它的索引.第一个元素的索引值是0.          List的实现类有LinkedList, ArrayList, Vector, Stack. (02) Set是一个不允许有重复元素的集合.          Set的实现类有HastSet和TreeSet.

Java集合系列之总体框架

集合--童年的美好时光 集合,忽然让小编想起那段美好的学生时光,集合第一次遇见她的时候,小编当年还是一个懵懂的丫头,也不曾想过会在计算机的世界再次相遇,再回首,集合在数学中是一个基本概念,集合就是"一堆东西",集合里面的"东西"叫做元素,由一个或多个元素所构成的叫做集合,又邂逅,计算机的世界中,集合是一组可变数量的数据项也可能是0个的组合,这些数据项可能共享某些特征,需要以某种操作方式一起进行操作,一般来说,这些数据项的类型都是相同的,或者基类相同(若使用的语言支持

Java 集合系列01之 总体框架

http://www.cnblogs.com/skywang12345/p/3308498.html Java集合是java提供的工具包,包含了常用的数据结构:集合.链表.队列.栈.数组.映射等.Java集合工具包位置是java.util.*Java集合主要可以划分为4个部分:List列表.Set集合.Map映射.工具类(Iterator迭代器.Enumeration枚举类.Arrays和Collections)..Java集合工具包框架图(如下): 大致说明: 看上面的框架图,先抓住它的主干,

java集合框架01——总体框架一览

java集合框架是java提供的工具包,在java.util.*中,这个包中包含了常用的数据结构:集合.数组.链表.栈.队列.映射等.java集合框架主要可以分为四个部分:List列表.Set集合.Map映射和工具类(Iterator迭代器.Enumeration枚举类.Arrays和Collections). java集合框架示意图如下: 从图中可以看出,java中集合框架有两条分支:Collection和Map. 1. Collection是一个接口,它包含了集合的基本操作和属性.Colle

10.6 android输入系统_Dispatcher线程_总体框架

图解Android - Android GUI 系统 (5) - Android的Event Input System - 漫天尘沙 - 博客园.htm // 关注里面的Dispatcher处理流程http://www.cnblogs.com/samchen2009/p/3368158.html Dispatcher线程框架: 分发 问:发什么?发给谁? Dispatcher流程如下: 获得事件: (1)放入队列前先稍加处理:分类(Global输入/System输入/User输入).处理紧急事件

MySQL(一)总体框架 & redo-log 和 bin-log 的介绍

文章部分总结来自课程,非原创 MySQL 组织架构     下面这张图就可以解释关于 MySQL 底层的组织架构了.     上面的图可以直观地展示两个重要的东西 : 一条 SQL 的执行流程 MySQL 的底层架构   大体来说,MySQL可以分为Server层和存储引擎层两部分. Server 层      Server层包括连接器.查询缓存.分析器.优化器.执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期.时间.数学和加密函数等),所有跨存储引擎的功能都在这一层实现

android多媒体框架学习 详解 最新版本

一:多媒体框架概述   jellybean 的多媒体跟以前的版本,通过对比没啥变化,最大的变化是google终于舍得给multimedia建个独立的git了(framework/av),等你好久了!也体现了media 在整个android系统中的重要性!framework/av下都是些C/C++代码(libmedia,libmediaplayerservice,libstagefright),jni和 java api 还是保留在原来的位置,改革还不够彻底,但还是迈出了这一步,以后维护能更好的进