博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Lucene 原理分析之-代码-笔记
阅读量:5904 次
发布时间:2019-06-19

本文共 944 字,大约阅读时间需要 3 分钟。

hot3.png

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

b6ccdd7a7eb9e33faca2d878ace2a3db899.jpg

1. 索引过程:

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

2. 搜索过程:

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

代码参见::LuceneTest

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

在lucene索引库的创建的时候,我们有两种不同的索引库创建方式

  • 文件索引库

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

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

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

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

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

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

  • 内存索引

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

      • 优点:读取快

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

  • 两种索引库的结合

    • 根据两种索引库的特点我们可以将两种索引库结合起来,
      • 设计的思路是在程序启动时,
      • 将文件索引库中的索引拷贝到内存索引库中,
      • 然后让程序与内存索引库交互,
      • 当交互完毕后再将内存索引库的索引持久化到文件索引库
    • 代码详见::
      • public static void multiIndex() throws IOException

 

转载于:https://my.oschina.net/u/3847203/blog/2993092

你可能感兴趣的文章
【团购】《设计原本》中文版+英文版,最低可至5折
查看>>
华为交换机配置 vlan2 vlan3 互访
查看>>
Android中的各种Dialog
查看>>
centos7安装zabbix
查看>>
UITableView 列表视图3 -- QQ样式
查看>>
随我一起慢慢揭开Andoird里事件分发机制的神秘面纱
查看>>
路由策略3_Distribute-list3
查看>>
Application与Activity
查看>>
关于Linux操作系统的开机过程详解
查看>>
我的友情链接
查看>>
Launcher的使用
查看>>
只是完成作业
查看>>
网络_04_网络层
查看>>
rpm、yum、周期性计划、sed
查看>>
编程总结
查看>>
Kotlin教程学习-控制流
查看>>
【规划】近一个月的规划
查看>>
SuppressWarnings 的作用与用法
查看>>
django base (1)
查看>>
Maven学习总结(十)——使用Maven编译项目gbk的不可映射问题
查看>>