• 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

  • 相关阅读:
    MongoDB中聚合工具Aggregate等的介绍与使用
    《PHP7底层设计与源码实现》学习笔记1——PHP7的新特性和源码结构
    数据结构与算法之PHP排序算法(桶排序)
    数据结构与算法之PHP排序算法(快速排序)
    数据结构与算法之PHP排序算法(归并排序)
    数据结构与算法之PHP排序算法(希尔排序)
    数据结构与算法之PHP排序算法(堆排序)
    从关系型数据库到非关系型数据库
    redis在windows下安装和PHP中使用
    PHP-redis中文文档
  • 原文地址:https://www.cnblogs.com/joylee/p/1612438.html
Copyright © 2020-2023  润新知