• Lucene索引


    一、lucene建立索引过程


    1、解析器用来解析物理文件,从中提取出所需的文本,其作用于物理文件;
    2、分析器用来分析文本内容(文字),其作用于解析器处理物理文件之后生成的文本;
    Lucene没有自己开发语言分析程序,JavaCC来生成分析器;
    分析器(analyzer)主要包含分词器和过滤器。分析器使用分析器和过滤器构成一个“管道”,文本在“滤过”这个管道之后,就成为可以进入管道的最小单位;
    分词器(tokenizer)主要用于对文本资源进行切分,将文本规则切分为一个个可以进入索引的最小单位;
    过滤器(tokenfilter)主要对分词器切分的最小单位进入索引进行预处理(大写转小写,复数转单数)

    二、索引文件格式


    segments文件——主要的索引块,其中包含主要的索引信息;
    扩展名为fnm文件——存储Field的名称;
    扩展名为fdt文件——存储所有设置了保存属性(Store.YES)的Field数据;
    扩展名为fdx文件——用于存储文档在fdt文件中的位置;
    扩展名为cfs文件——复合式索引格式的索引文件,相当于把多个索引文件合并起来,从未减少索引文件的数量;

    三、索引优化
    1、复合式索引格式 IndexWriter.setUseCompoundFile(true)
    2、调整索引优化参数
    a、mergeFactor 用于控制索引块的合并频率和大小
    b、maxMergeDocs 用来限制每个索引块的文档数量
    c、用来限制内现中的文档数量
    3、内存缓冲器与索引合并
    首先在内存中建立索引,然后将建立好的索引集中写到磁盘中去,从而加快索引速度
    4、限制每个Field的词条数量
    5、索引本身的优化 IndexWriter.optimize()合并索引

    四、索引管理
    1、查看:使用IndexReader类读取索引及其相关词条
    2、删除:使用IndexReader类删除索引
    3、更新:先删除、再新增

    五、索引同步
    1、Lucene并发访问规则

    2、线程安全性

    3、索引锁机制

  • 相关阅读:
    JS提取子字符串函数比较
    js事件定义方式和获取事件对象event总结
    让body的clientHeight与html的clientHeight相等的方法
    关于原型链和继承问题的思考:为什么不能直接把父类的prototype赋值给子类的prototype
    [javascript权威指南笔记02]Throw语句和异常处理机制try/catch/finally
    转载:javascript语句标签
    转:JS中强大的正则表达式
    分享我常用的Javascript工具函数
    对prototype,instanceof和constrctor的理解
    xml基础知识总结和回顾
  • 原文地址:https://www.cnblogs.com/renwei/p/4174186.html
Copyright © 2020-2023  润新知