站内全文检索实现机制-read.ppt

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
站内全文检索实现机制-read

基于lucene的全文检索 2007.10.12 Lucene简介 Lucene不是一个完整的全文索引应用,而是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。 Lucene的作者:Lucene的贡献者Doug Cutting是一位资深全文索引/检索专家,曾经是V-Twin搜索引擎(Apple的Copland操作系统的成就之一)的主要开发者,后在Excite担任高级系统架构设计师,目前从事于一些INTERNET底层架构的研究。他贡献出的Lucene的目标是为各种中小型应用程序加入全文检索功能。 已经有很多Java项目都使用了Lucene作为其后台的全文索引引擎,比较著名的有: Jive:WEB论坛系统; Eyebrows:邮件列表HTML归档/浏览/查询系统,本文的主要参考文档“TheLucene search engine: Powerful, flexible, and free”作者就是EyeBrows系统的主要开发者之一,而EyeBrows已经成为目前APACHE项目的主要邮件列表归档系统。 Cocoon:基于XML的web发布框架,全文检索部分使用了Lucene Eclipse:基于Java的开放开发平台,帮助部分的全文索引使用了Lucene 站内全文检索实现机制 工作原理:如下图 比较一下Lucene和数据库的模糊查询: 结论: 全文检索和数据库应用的最大不同在于:让最相关的头100 条记 录满足98%以上用户的需求! Lucene的使用 Lucene的组成结构: 对于外部应用来说索引模块(index)和检索模块(search)是主要的外部应用入口,如下图: Lucene的使用方法: 建索引: //得到存放索引文件的目录 Directory fsDirectory = FSDirectory.getDirectory(indexDirectory, true); // 创建分析器,主要用于从文本中抽取那些需要建立索引的内容 Analyzer analyzer = new StandardAnalyzer(); // 用指定的语言分析器,索引文件目录,构造一个新的写索引器,参数true用于确定是否覆盖原有索引的 IndexWriter indexWriter = new IndexWriter(fsDirectory,analyzer, true); // 为article表的主健创建索引,关于Field的几个参数下面有详细解释 document.add(new Field(content, content,Field.Store.YES, Field.Index.TOKENIZED)); //开始创建索引文件 indexWriter.addDocument(document); // Optimize的过程就是要减少剩下的Segment的数量,尽量让它们处于一个文件中. indexWriter.optimize(); indexWriter.close(); Field就像我们学过的数据库中的字段,简单的说,就是一个名值对。这个域有三种属性,分别是 isStored - 是否被存储 isIndexed - 是否被索引 isTokenized - 是否分词 这些属性的组合又构成了四种不同类型的Field,而且各有用途 Field(String name, String value, Field.Store.YES, Field.Index.UN_TOKENIZED) 存储、不索引、不分词,比如文件的全路径 Field(String name, String value,Field.Store.YES, Field.Index.NO) // version 2.0.0 不存储、索引、分词,比如HTML的正文、Word的内容等等,这部分内容是要被索引的,但是由于具体内容通常很大,没有必要再进行存储,可以到时候根据URI再来挖取。所以,这部分只分词、索引,而不存储。 Field(String name, String value,Field.Store.YES, Field.Index.TOKENIZED)// version 2.0.0 存储、索引、分词,比如文件的各种属性,比如MP3文件的歌手、专辑等等。 Field(String name, Reader reader) ?// version 2.0.0 不存储、索引、分词。 搜

文档评论(0)

ailuojue + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档