索引建立和搜索过程所一个总结,如图: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