ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Lucene

Lucene

原创 Linux操作系统 作者:beifengwang 时间:2013-11-05 11:26:02 0 删除 编辑
  Lucene是一个由java编写的高性能,全方位的单词搜索引擎库。把所有数据都作为字符串来处理,通过Lucene来进行查找全文检索大体分两个过程,索引创建和搜索索引 ,索引创建是将生活中所有的结构化数据和非结构化的数据提取信息,创建索引的过程,搜索索引是得到用户的查询请求,再搜创建的索引,返回结果的过程,Lucene创建索引用的是倒排索引的存储,创建好的索引属于结构化数据,可以很快的进行查找,


  结构化数据很容易进行搜索,数据库、元数据、包含的就是结构化数据,对数据库的搜索,用SQL语句。对元数据的搜索,如利用windows搜索对文件名,类型,修改时间进行搜索。
word、txt、邮件文件中的内容属于非结构化数据,要对这些数据进行查找,只能采用顺序扫描的方式,但是顺序扫描的方式速度很慢。对非结构化数据的搜索:如利用windows的搜索也可以搜索文件内容,Linux下的grep命令,再如用Google和百度可以搜索大量内容数据。有些地方可能还会有半结构化数据类似XML,HTML,半结构数据有时可根据不同情况按不同的方法来处理,非结构化数据也可以叫全文数据。


  对非结构化数据也即对全文数据的搜索主要有两种方法:
非结构化数据顺序扫描是比较原始的方法,对于小数据量的文件还是比较方便的,但对于大量的文件这种方法就很慢,对结构化数据的搜索却相对较快、我们将非结构化数据中的一部分信息提取出来,重新组织,变得有一定的结构,然后这些数据进行搜索,这样的搜索相当来说要更快,这也构成了全文检索的基本思路。


  Lucene是一个高效的,可扩展的,全文检索库、也是java开源解决方案中的最佳实现,无须配置,仅支持纯文本文件的索引和搜索、不负责由其他格式的文件抽取纯文本文件,或从网络中抓取文件的过程。


  Lucene也有弊端,在创建集群时Lucene并不是通用的。对于大多数来说它是快速的,但是对大型文档集合时,使用Lucene会比较麻烦,必须把Lucene转换到别的搜索引擎,转换的时候会遇到很多没必要的问题。
  当使用布尔查询时Lucene是一个高性能的划词检索引擎,跨度查询时,最基础的实现导致了复杂的算法,而且运行速度比较慢,并且一份文档会有很多重复的短语
  Lucene的设计不是特别好、虽然设计的有包有类,但是它几乎没有任何设计模式。Lucene被写出来的时候没有处理器、硬件内存也不足够大,索引结构也被设计使用线性的内存


  上面说到布尔查询、布尔查询时涉及到几条词汇倒排索引的合并的问题。未压缩的索引合并是一个十分容易的事情,可是,lucene的索引经过压缩了以及String长度的不确定性,所以,我们无法根据词汇直接定位到它对应的TermInfo。于是lucene就使用了SkipInterval/SkipData这类结构来加快比较速度,通过和它们的比较简单的跳过多个字节,加快了查找速度。
 


更多详情

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29212814/viewspace-775693/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 简析HTTPS
请登录后发表评论 登录
全部评论

注册时间:2013-10-15

  • 博文量
    118
  • 访问量
    265671