`
ansjsun
  • 浏览: 200048 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

lucene.net 某些类的介绍

阅读更多
 在Lucene.Net索引开发中,用到的类不多,这些类是索引过程的核心类。其中Analyzer是索引建立的基础,Directory是索引建立中或者建立好存储的介质,Document和Field类是逻辑结构的核心,IndexWriter是操作的核心。其他类的使用都被隐藏掉了,这也是为什么Lucene.Net使用这么方便的原因。
  2.1 Analyzer

  前面已经对Analyzer进行了很详细的讲解,Analyzer将会把一段文本分析称一个个Token。这些Token如何被IndexWriter使用,这里牵涉到一个很重要的类,那就是DocumentsWriter。这个类非常关键,可以说是索引部分最核心的类,IndexWriter只是它的一个包装。这里主要介绍应用,所以就不做太详细的介绍。Token在DocumentsWriter类中,通过DocumentsWriter的最重要的方法——InvertField——推送到了Field中。这样就完成了分词添加到逻辑结构的过程。
  2.2 Directory

  严格来说,Directory并不专属于索引,它代表的是Lucene.Net的存储介质,它表示了索引具体存放到什么地方。在前面的两个示例中似乎没有使用到它,那是因为你传入的路径,会自动转换成Directory。Directory有两个子类,分别是RAMDirectory——代表索引存放到内存中,和FSDirectory——代表索引存放到硬盘。在使用FSDirectory存放到硬盘的过程中,还是会调用RAMDirectory。IndexWriter会把建立的索引先放到RAMDirectory,然后到一定的条件,才将这些数据写入硬盘。

  2.3 IndexWriter

  IndexWriter是索引中负责操作的核心,它负责把索引文件写入存储介质,是控制逻辑存储转换为物理存储的纽带。

  IndexWriter共有10个可以使用的构造函数,但是他们的参数类型比较少。一共有以下几种:

  (1)、Directory d;

  (2)、Analyzer a;

  (3)、bool create;

  (4)、FileInfo path;

  (5)、string path;

  (6)、bool autoCommit;

  (7)、IndexDeletionPolicy deletionPolicy;

  其中6,7不常用。而FileInfo path和string path最终都会构造成Directory,又因为这两种路径都是磁盘的路径,所以构造出来的Directory一定是FSDrectory。bool create表示是否是创建,否则是增量更新,默认状态是false。bool autoCommit不常用,是用来指定是否当索引在close状态下才更新的,如果是false,则需要在close状态下更新。IndexDeletionPolicy deletionPolicy则是指定是否对以前的更新进行移除,它能表示为两个值,KeepOnlyLastCommitDeletionPolicy和SnapshotDeletionPolicy,默认状态下是,KeepOnlyLastCommitDeletionPolicy。

  2.4 Document

  Document就是一条虚拟记录,可以理解为数据里的一行。正是有了它,才使我们可以很方便并且易于理解地操作索引文件。它一般记录了需要用到的一个文档的属性,当然,这需要和Field联合使用。

  2.5 Field

  Field类就是数据库里的一列。一个文档有标题,内容,作者,创建时间这四个属性的话,那么就需要四个Field保存这些属性,然后把四个Field加入到Document中,就有了一行记录。在查询的时候,无论查那个列,总能得到一整行记录,是不是和数据库很相似?

  Field本身具有一些属性,就和数据库里的列一样。它的属性通过它的三个内嵌类设置,其实这个地方完全可以用枚举,但是很遗憾的是Java里面没有枚举,所以移植过来也没有转换为枚举。

  Field的构造函数也比较多,有7个之多。其中Store,Index和TermVector是通过内部类指定的。

  (1)、Store 有三个选项,Field.Store.COMPRESS表示被压缩存储;Field.Store.YES表示储存;Field.Store.NO表示不被存储。

  (2)、Index的选项有四个,Field.Index.NO表示不建立索引;Field.Index.TOKENIZED表示分词后索引;Index.NO_NORMS表示值存储内容;Field.Index.UN_TOKENIZED表示不分词索引。

  (3)、TermVector这个参数也不常用,它有五个选项。Field.TermVector.NO表示不索引Token的位置属性;Field.TermVector.WITH_OFFSETS表示额外索引Token的结束点;Field.TermVector.WITH_POSITIONS表示额外索引Token的当前位置;Field.TermVector.WITH_POSITIONS_OFFSETS表示额外索引Token的当前和结束位置;Field.TermVector.YES则表示存储向量。

  2.6 索引核心类工作流程

  图 2.6.1

  如图2.6.1表示了数据在Lucene.Net索引过程处理的整个流程。注意,这个流程图中,分词器并不直接产生Field对象,在实例中Analyzer是被赋予IndexWriter实例的,等等执行添加文档操作的时候,IndexWriter才会真正地调用分词器生成Field需要的数据(在DocumentWriter类中)。上图只是反映了数据是如何流动的,并不是真实的调用过程。

分享到:
评论

相关推荐

    lucene.NET 中文分词

    lucene.NET 中文分词 高亮 lucene.NET 中文分词 高亮 lucene.NET 中文分词 高亮 lucene.NET 中文分词 高亮

    Lucene.Net

    Lucene.Net 包含Lucene.Net1.3.2.1到最新版Lucene.Net2.9.4多有DLL,并且Lucene.Net2.9.2和Lucene.Net2.9.4提供Demo和功能文档

    lucene.net 2.9.1 源码

    lucene.net 2.9.1 源码,lucene.net 2.9.1最新dll

    lucene.net 完全入门教程

    lucene.net 完全入门教程,包括 lucene.net 介绍, lucene.net工作模式, lucene.net分词方法和中文分词方法, lucene.net索引的建立详解, lucene.net搜索详解, lucene.net的下载方法, lucene.net搜索结果实现...

    Lucene.net 3.03 最新版本下载

    Lucene.net下载 Lucene.net3.03,最新版的Lucene.net下载。

    lucene.NET使用教程整合

    lucene.NET使用教程整合 lucene.NET使用教程整合 lucene.NET使用教程整合 lucene.NET使用教程整合 lucene.NET使用教程整合 lucene.NET使用教程整合

    lucene.net基本应用(doc)

    lucene.net基本应用(doc) lucene.net基本应用(doc) lucene.net基本应用(doc)

    Lucene.net概念介绍

    Lucene.net是Lucene的.net移植版本,是一个开源的全文检索引擎开发包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎。开发人员可以基于Lucene.net实现全文检索的...

    Lucene.net 2.0 API + DLL 下载

    Lucene.net 2.0 API,Lucene.net 2.0 dll,Lucene.net学习探索着必备。

    Lucene.net资源包

    做全文搜索引擎lucene.net包的完整dll,包括:App_Licenses.dll、DictSeg.dll、FredCK.FCKeditorV2.dll、FreeTextBox.dll、FTAlgorithm.dll、FTAlgorithm.pdb、Highlighter.Net.dll、Lucene.China.dll、Lucene.Net....

    Lucene.net源码及中文文档

    Lucene.net 搜索引擎 Lucene.net源码 Lucene.net中文文档; 好的东西需要分享

    Lucene.net的四个版本(更新至2018.1.26 )

    基于Lucene.net的四个版本(更新至2018.1.26 ) ------------------------------- Lucene.Net.2.9.2.2-支持.net2.0和4.0; Lucene.Net.2.9.4.1 仅支持.net4.0; Lucene.Net.3.0.3 z支持3.5和4.0; Lucene.Net.4.8.0-...

    Lucene.Net.dll 2.0

    Lucene.Net 2.0 已编译 dll

    Lucene.net2.9.2源码

    Lucene.net是我从https://svn.apache.org/repos/asf/incubator/lucene.net/tags/Lucene.Net_2_9_2/ 上下载下来的,如果你想自己下载可以按照http://apps.hi.baidu.com/share/detail/22856972上面说的方法来下载。...

    使用Lucene.net进行全文搜索

    使用Lucene.net进行全文查找多关键字匹配

    Lucene.Net.dll 2.1

    Lucene.Net.dll 2.1 Lucene.Net,.net 的开源 全文搜索框架!

    Lucene.Net.dll

    Lucene.Net.dll 2.9.2

    Lucene.Net_2_9_1.zip

    官方版Lucene.Net_2_9_1.zip 有实列

    lucene.net 2.9.2 dll 最新版

    lucene.net 2.9.2 dll 最新版 已测试通过,官网只有源码版 没有dll版。

    Lucene.net-4.8.0 -new Bate.rar

    Lucene.Net 4.8版本源代码及案例,内包含Lucene.Net 4.8最新版本源代码及部分使用案例,Lucene.Net + 盘古分词一直是net旗下的最佳搜索方案,你GET到了吗?

Global site tag (gtag.js) - Google Analytics