lucene.net搜索索引详解

lucene.net索引建立成功以后我们会看到索引目录会添加很多文件,如图
2009112701
我这里对部分文件做下介绍,大家只需要了解即可:
1、索引的segment  每个segment代表lucene的一个完整索引段,建立索引后必须存在的一个文件。
2、.fnm格式文件  包含 Document中所有Field名称
3、.fdx和.fdt格式文件  用于存储具有store.yes属性的field的数据的相关信息
4、.tii和.tis格式文件  .tii存储分词后term的索引文件,标明了每个.tis文件中词条的位置
5、.cfs格式  设置了usercompoundfile属性后就会有这个文件了
有人搜索的时候常常会报“找不到segments文件”类似的错误,是引文还没有建立索引,需要重新新建索引

下面介绍几个建立索引时的参数,可以帮助索引建立和优化查询
1、合并英子 mergefactor
当索引不断添加,索引达到一定数量时对索引中的segment进行合并
mergefactor取值较大时适合批量向索引添加数据,适合大量数据,取值小时适用小数据,间歇性向索引添加文档
2、maxmergedocs

限制segment的数量
maxmergedocs取值较大时适合批量向索引添加数据,适合大量数据,取值小时适用小数据,间歇性向索引添加文档
3、minmergedocs   maxbuffereddos
这两个是同样的效果,索引保存到硬盘前肯定是要先保存到内容中,这里设置保存在内容中的文档数量
当其值较大时候需要更多的内容,较小的时候就发生频繁的IO操作

索引的合并

 public IndexWriter(Directory d, Analyzer a, bool create);


创建索引的时候第一个参数是Directory类型,是lucene自带的工具,有两个子类,分别是RAMDirector和FSDirectoy
RAMDirector索引存放在内容,速度快,但是不够稳定,存放数量少
FSDirectoy存放在硬盘,速度较慢,但是存放数量多,比较稳定
建立索引时推荐先使用RAMDirector然后合并到FSDirectoy
合并索引使用

  fsdirwrite.AddIndexes(new Lucene.Net.Store.Directory[]{ramdir});
  fsdirwrite.Close();//一定要关闭


 

optimize()
索引优化,提高搜索的速度,合并segment。

本文主要讲述了在建立索引过程中的一些优化技巧,这里上存一段代码参考
下载地址:https://files.cnblogs.com/joylee/luceneindex.rar

原文地址:https://www.cnblogs.com/joylee/p/1612438.html