zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    linux之awk命令
    HDU 2097 Sky数 进制转换
    HDU 2077 汉诺塔IV
    HDU 2094 产生冠军 dfs加map容器
    HDU 2073 叠框
    HDU 2083 简易版之最短距离
    HDU 2063 过山车 二分匹配
    天梯 1014 装箱问题
    天梯 1214 线段覆盖
    天梯 1098 均分纸牌
  • 原文地址:https://www.cnblogs.com/joylee/p/1612438.html
Copyright © 2011-2022 走看看