Lucene 原理分析之-代码-笔记

索引建立和搜索过程所一个总结,如图:java

1. 索引过程:spa

  • 1) 有一系列被索引文件
  • 2) 被索引文件通过语法分析和语言处理造成一系列词(Term) 。
  • 3) 通过索引建立造成词典和反向索引表。
  • 4) 经过索引存储将索引写入硬盘。

2. 搜索过程:.net

  • a) 用户输入查询语句。
  • b) 对查询语句通过语法分析和语言分析获得一系列词(Term) 。
  • c) 经过语法分析获得一个查询树。
  • d) 经过索引存储将索引读入到内存。
  • e) 利用查询树搜索索引,从而获得每一个词(Term) 的文档链表,对文档链表进行交,差,并获得结果文档。
  • f) 将搜索到的结果文档对查询的相关性进行排序。
  • g) 返回查询结果给用户。

代码参见::LuceneTest设计

  • D:\BaiduNetdiskDownload\code\activemq-producer\src\main\java\lucene\LuceneTest.java

 内存索引库和文件索引库结合

在lucene索引库的建立的时候,咱们有两种不一样的索引库建立方式3d

  • 文件索引库

    • final Path docDir = Paths.get("index");code

      Directory directory=FSDirectory.open(Paths.get("index"));blog

    • 这样建立的索引库是在本地磁盘上建立一个index文件夹,排序

      • 而且将索引放在index中,也称为文件索引库索引

        • 优势:将索引持久化到磁盘上,能长久保存。内存

        • 缺点:相比较内存索引库,读取慢

  • 内存索引

    • Directory directory= new RAMDirectory();
    • 只须要一句代码,就建立了一个内存索引库

      • 优势:读取快

      • 缺点:不具有持久化能力,结束时候内存索引库便会删除

  • 两种索引库的结合

    • 根据两种索引库的特色咱们能够将两种索引库结合起来,
      • 设计的思路是在程序启动时,
      • 将文件索引库中的索引拷贝到内存索引库中,
      • 而后让程序与内存索引库交互,
      • 当交互完毕后再将内存索引库的索引持久化到文件索引库
    • 代码详见::
      • public static void multiIndex() throws IOException
相关文章
相关标签/搜索