zoukankan      html  css  js  c++  java
  • 索引库优化

    1什么是索引库

         索引库是Lucene的重要的存储结构,它包括二部份:原始记录表,词汇表

         原始记录表:存放的是原始记录信息,Lucene为存入的内容分配一个唯一的编号

         词汇表:存放的是经过分词器拆分出来的词汇和该词汇在原始记录表中的编号

    1.2为什么要将索引库进行优化

         在默认情况下,向索引库中增加一个Document对象时,索引库自动会添加一个扩展名叫*.cfs的二进制压缩文件,如果向索引库中存Document对象过多,那么*.cfs也会不断增加,同时索引库的容量也会不断增加,影响索引库的大小。

    1.3索引库优化方案

      合并cfs文件,合并后的cfs文件是二进制压缩字符,能解决是的文件大小和数量的问题

            indexWriter.addDocument(document);
            indexWriter.optimize();
            indexWriter.close();

      设定合并因子,自动合并cfs文件,默认10个cfs文件合并成一个cfs文件

            indexWriter.addDocument(document);
            indexWriter.setMergeFactor(3);
            indexWriter.close();

    使用RAMDirectory,类似于内存索引库,能解决是的读取索引库文件的速度问题,

                 它能以空换时,提高速度快,但不能持久保存,因此启动时加载硬盘中的索引库到内存中的索引库,退出时将内存中的索引库保存到硬盘中的索引库,且内容不能重复。

                                 

           Article article = new Article(1,"学习","学习JavaEE");
            Document document = LuceneUtil.javabean2document(article);
            
            Directory fsDirectory = FSDirectory.open(new File("E:/indexDBDBDBDBDBDBDBDB"));
            Directory ramDirectory = new RAMDirectory(fsDirectory);
            
            IndexWriter fsIndexWriter = new IndexWriter(fsDirectory,LuceneUtil.getAnalyzer(),true,LuceneUtil.getMaxFieldLength());
            IndexWriter ramIndexWriter = new IndexWriter(ramDirectory,LuceneUtil.getAnalyzer(),LuceneUtil.getMaxFieldLength());
            
            ramIndexWriter.addDocument(document);
            ramIndexWriter.close();
            
            fsIndexWriter.addIndexesNoOptimize(ramDirectory);
            fsIndexWriter.close();
  • 相关阅读:
    C#中 @ 的用法
    ASP.NET页面间传值
    ASP.NET中常用的文件上传下载方法
    把图片转换为字符
    把图片转换为字符
    JavaScript 时间延迟
    Using WSDLs in UCM 11g like you did in 10g
    The Definitive Guide to Stellent Content Server Development
    解决RedHat AS5 RPM安装包依赖问题
    在64位Windows 7上安装Oracle UCM 10gR3
  • 原文地址:https://www.cnblogs.com/loaderman/p/10059464.html
Copyright © 2011-2022 走看看