官术网_书友最值得收藏!

3.2.7 索引的優化與合并

在完成了創建最終倒排文件和詞典后,全部倒排索引文件的創建工作完畢。從某種角度上看,這些都是一種預先計算(PreComputation)。這種預先計算都是為了節省查詢時間,對海量數據完成一次最終倒排索引文件的制作是非常耗時的,這些盡可能預先完成的計算為查詢爭取了寶貴時間。優化索引很耗時,但索引優化后,查詢速度快。

在優化索引階段,大約需要索引大小2倍的臨時空間。因此需要大約400GB的硬盤來容納200GB的索引。

索引很多文檔的過程通常比較慢。為了加快索引速度,可以多臺機器同時索引不同內容,然后合并。要合并的幾個不同的索引結構要一致。下面的程序可以把多個目錄下的索引合并到一個目錄下。

        IndexWriter writer = new IndexWriter(args[0], null, true);
        writer.setMergeFactor(50); //參數越大,用到的內存越多。影響內存的使用
        //影響索引文件的數量
        writer.setUseCompoundFile(false);
        Directory[] dirs = new Directory[args.length -1];
        System.out.println("begin :"+args[0]);
        for (int i=1 ; i<args.length; i++)   {
                    dirs[i-1]= FSDirectory.getDirectory( args[i], false);
                    if (dirs[i-1]==null)
                        System.out.println("Directory is null:"+i);
        }
        writer.addIndexes(dirs);
        writer.close();
主站蜘蛛池模板: 视频| 饶河县| 淮阳县| 外汇| 临江市| 西丰县| 龙山县| 张家港市| 南郑县| 泾川县| 永平县| 漳平市| 琼海市| 建昌县| 衡东县| 贵阳市| 镇沅| 丽水市| 宝兴县| 遂平县| 乐陵市| 开封市| 荣昌县| 西乌珠穆沁旗| 合肥市| 萨嘎县| 舞钢市| 太和县| 祁门县| 万山特区| 东兴市| 辛集市| 连山| 前郭尔| 长宁区| 汉源县| 韶关市| 泰宁县| 桦川县| 神池县| 临江市|