Lucene索引的建立

Lucene是完全开源的全文搜索引擎,但不是一个具体的应用App.你需要自己进行一些搭建。但是基本上函数类都是已经提供好了的。最初是Java版的,但由于lucene的高性能,其他语言也都有相应的版本实现。我也是有幸接触到了Lucene.说实话,完全是个小白。完全是自学之中。由于目前找到的书籍中邱哲、符滔滔、王学松版<搭建自己的搜索引擎>读着感觉写的很清楚,可惜也是2010年出版的了。里面的lucene谈到的也是2.0版。目前的是6.0版。我在这里把一些思想和概念在这里写出来,只是希望能在此基础上大家去看那些其他人写的关于最新的lucene教程容易些。个人理解,仅作交流。

1.      搜索引擎之所以检索速度快其中一个因素就是对索引的建立。就好像书籍的目录,可以让我们迅速定位到内容。这里引用一张图说明搜索过程。

从图中可以很清晰的看到一个搜索系统,三个部分:收集数据整理成索引文档,这个过程多是确定你需要检索的信息。比如如果你需要检索图书馆中的书。那么你可能需要把所有检索书时可能用到的信息整理出来包括书名,作者,出版日期,摘要等;建立索引。对收集的索引信息存入数据库后我们需要在其上建立索引;搜索服务。搜索其实就是检索建立好索引库。大型的公司服务器每天还都会自动更新索引,以保证用户检索信息的实时性。这里我们仅谈论索引的建立过程。

2,索引建立

           <pre name="code" class="java">           Document bookdoc=new Document();Field bookName=new Field("bookname","钢铁是怎样炼成的",Field.Store.YES,Field.Index.TOKENIZED);Field author=new Field("author","匿名",Field.Store.YES,Field.Index.UN_TOKENIZED);bookdoc.add(bookName);bookdoc.add(author);IndexWriter writer=new IndexWriter(INDEX_STORE_PATH,new StandarAnalyzer(),true);writer.addDocument(bookdoc);
           writer.close();

上面就是一个索引地建立过程。比如我们要检索一本书的信息。首先我们将获取的需要检索的书名、作者信息存入Field类型对象中,然后将Field对象加入到Document类型中。Indexwriter是一个建立索引的工具,利用它对索引创建。Indexwriter中封装了许多类和方法。当我们将Document类型的数据给它时,就是告诉它,对bookdoc建立索引。

对于Document和Field的关系就好像一张表格中的记录和字段。Document只是表格中的一行,而Field只是一列。

3.参数解释

Filed:前两个参数很容易理解,给字段起个名字,传入值。第三个是表示该字段表示完整存储下来。通常如果在检索时需要完整显示出来信息就选Yes。如果该字段仅是书中一段摘要,我们也可以用Field.Store.No.可以看的出Store为Field中的静态类。而YES为Store类型的值。同理,后面的参数表示该字段需要被分词器切分检索。对于作者名字段通常用户查询时需要完整输入,因此该字段不需要切分。

Document :调用add()方法,将FIeld加入其中。

Indexwriter:第一个为索引建立完成后存放的路径,通常需要捕捉异常即try...catch神马的。第二个参数是指定语言的分词器实例,上文用的是StandarAnalyzer。第三个布尔型值是表式是否将指定路径下的内容清空。通常我们第一次建立索引时置为true,以后如果只是更新索引应该将其置为false。最后关闭writer.这点需要注意:如果不关闭会导致建立的索引数据没有导入磁盘,数据将在缓存中,甚至可能出现锁定情况。下次在该目录下将会发生无法加入文件的情况。

这里给出一篇博客的链接,写的是lucene4.0,有兴趣可以看一下http://www.cnblogs.com/xing901022/p/3933675.html。

最后再度说明,以上内容是lucene2.0之前,如果能帮助大家更轻松地看懂其他IT员的博客,那这篇文章就算值了。文章仅为交流,不当之处,敬请留言指教。

Lucene索引的建立相关推荐

  1. lucene: 索引建立完后无法查看索引文件中的数据

    索引建立时 1.对原有索引文件进行建立,是可以访问索引文件中的数据的 2.建立新索引文件,必须等建立完毕后,才可以访问,新建立的文件如果没有建立完是不可以被访问的 如果想建立200w的数据的索引又想立 ...

  2. lucene索引的删除和更新

    Lucene索引的删除和更新 删除和更新和新增一样,也是通过IndexWriter 对象来操作的,IndexWrite对象的deleteDocuments ()方法用于实现索引的删除,updateDo ...

  3. Lucene学习总结之四:Lucene索引过程分析

    对于Lucene的索引过程,除了将词(Term)写入倒排表并最终写入Lucene的索引文件外,还包括分词(Analyzer)和合并段(merge segments)的过程,本次不包括这两部分,将在以后 ...

  4. 深入 Lucene 索引机制

    简介: Lucene 是一个基于 Java 的全文检索工具包,你可以利用它来为你的应用程序加入索引和检索功能.Lucene 目前是著名的 Apache Jakarta 家族中的一个开源项目,下面我们即 ...

  5. lucene索引word/pdf/html/txt文件及检索(搜索引擎)

    2009-07-02 15:31 因为lucene索引的时候是将String型的信息建立索引的,所以这里必须是将word/pdf/html等文件的内容转化问字符型. lucene的jar包自己去下载. ...

  6. mysql lucene 索引区别_MySQL和Lucene索引对比分析

    MySQL和Lucene都可以对数据构建索引并通过索引查询数据,一个是关系型数据库,一个是构建搜索引擎(Solr.ElasticSearch)的核心类库.两者的索引(index)有什么区别呢?以前写过 ...

  7. 数据检索---基于Lucene索引

    有了大量的数据之后,想要找到特定的数据,模糊查询,也是一个巨大的挑战.这里有来一起回顾下Lucene索引.(以下很多来自百度百科,算作是科普吧) 说起Lucene,它是apache软件基金会jakar ...

  8. 影响Lucene索引速度原因以及提高索引速度技巧

    在网上看了一篇外文文章,里面介绍了提高Lucene索引速度的技巧,分享给大家. 先来看下影响索引的主要因素: MaxMergeDocs 该参数决定写入内存索引文档个数,到达该数目后就把该内存索引写入硬 ...

  9. Luke 5—— 可视化 Lucene 索引查看工具,可以查看ES的索引

    Luke 5 发布,可视化 Lucene 索引查看工具  oschina 发布于2015年08月31日  这是一个主要版本,该版本支持 Lucene 5.2.0. 它支持 elasticsearch ...

最新文章

  1. Lombok: Java开发的利器
  2. vector机器人 WAYS TO INTERACT WITH VECTOR 与 VECTOR 的交互方式
  3. golang key map 所有_Golang面试知识点总结
  4. 程序员技术练级攻略--原作者:陈皓
  5. AtomicLong和LongAdder的区别
  6. java 虚类private 继承_Java经典面试36题和答案
  7. 卡顿人生,如何拯救?
  8. 在Centos 6.5 X64下切割m3u8
  9. 推荐系统fmlr_推荐系统实践 0x0c FM系列(LR/FM/FFM)
  10. serv u服务器显示图片,图解经典FTP服务器工具 SERV-U最安全的设置【防止被入侵】...
  11. python 英语分词_Python实现中英文分词
  12. 用后台开发的逻辑理念学习VUE
  13. smartsvn学习(-)
  14. java计算机毕业设计学生成绩管理系统源程序+mysql+系统+lw文档+远程调试
  15. 学生们共被分为10个等级,包括学魔、学神、学霸、学痞、学弱^
  16. 建筑业减碳绝非一招鲜 专家建议加强改造农村建筑
  17. matlab中线形_MATLAB在绘图时的用法——线形图
  18. Python通过区号和校验位校验身份证号是否合法
  19. Codeforces Round #775 (Div. 2) E. Tyler and Strings
  20. 想要提高个人的数据分析能力,主要分为哪几步?

热门文章

  1. 西南民族大学校园网网站服务器地址,西南民族大学校园网建设介绍.PDF
  2. C语言标准的发展(详细)
  3. Linux 日志管理
  4. STM32CUBEMX—查表法实现SPWM
  5. composer 学习
  6. 11- OpenCV进行目标追踪 (OpenCV系列) (机器视觉)
  7. 2022年全球市场盐酸普萘洛尔总体规模、主要生产商、主要地区、产品和应用细分研究报告
  8. MongoDB简单入门篇及其Spring Boot整合
  9. linebreak_linebreak-style
  10. Excel透视表如何新增自定义列以及设置值汇总方式和值呈现方式