<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    盡量保證每一篇文章都是我自己寫的,希望每一文章都不浪費大家的時間。

    提高Lucene索引性能

    Posted on 2007-02-01 16:43 王睿 閱讀(4576) 評論(3)  編輯  收藏 所屬分類: 搜索技術



    當索引的文件不多時,用 Lucene 默認的設置就能得到很好的性能。但是,如果索引大量文件,就得通過一些手段去提高 Lucene 索引性能。

    ?

    1、? 索引性能差的原因

    1)??????? Lucene 索引過程

    index2.JPG
    ???
    在索引文件的過程中, Lucene 不是直接將文件索引到磁盤上,而是首先緩存,然后在寫到磁盤。如上圖所示。

    2)??????? 索引過程的瓶頸

    2??????? 往磁盤上寫索引文件的過程

    2??????? 將磁盤上的幾個小 Segment 合并成一個大的 Segment 的過程

    ?

    2、? 提高索引性能的方法

    1)??????? 方式 1 :調整 IndexWriter 參數

    為控制索引占用的內存以及 Segment 段合并的頻率, Lucene 提供了以下三個參數,通過調整這三個參數的值,可以改善索引的性能。

    2??????? mergeFactor (合并因子):決定把磁盤上的索引塊合并成一個大的索引塊的頻率,默認值為 10

    比如, mergeFactor 10 ,那么當 Segment 的數量達到 10 的話,這 10 Segment 會被合并成一個新的 Segment 。如果合并后的這個大的 Segment 的數量達到 10 的話還會被合并成一個更大的 Segment 。直到 Segment 中索引的文件數量達到 maxMergeDocs 時不在合并。

    如果需要索引的文檔數非常多的話這個默認值將是非常不合適的。對批處理的索引來講,為這個參數賦一個比較大的值會得到比較好的索引效果。

    2??????? minMergeDocs 最小合并文檔數 決定了內存中的文檔數至少達到多少才能將它們寫回磁盤(其實就是 buffer 的大小)。默認值是 10

    如果你有足夠的內存,那么將這個值盡量設的比較大一些將會顯著的提高索引性能。

    2??????? maxMergeDocs (最大合并文檔數):決定了一個索引塊中的最大的文檔數。默認值是 Integer.MAX_VALUE

    這個參數設置為比較大的值可以提高索引效率和檢索速度,由于該參數的默認值是整型的最大值,所以我們一般不需要改動這個參數。

    2)??????? 方式 2 :使用 RAMDirectory

    2??????? RAMDirectory FSDirectory 的不同: RAMDirectory 的所有操作都在內存中,而 FSDirectory 的操作直接對應磁盤。因此 RAMDirectory FSDirectory 要快。

    2??????? 先將索引寫入 RAMDirectory 到一定程度在從 RAMDirectory 寫入 FSDirectory 可以提高索引性能。

    ?

    FSDirectory?fsDir? = ?FSDirectory.getDirectory( " /tmp/index " , true );
    RAMDirectory?ramDir?
    = ? new ?RAMDirectory();
    IndexWriter?fsWriter?
    = ?IndexWriter(fsDir, new ?SimpleAnalyzer(),? true );
    IndexWriter?ramWriter?
    = ? new ?IndexWriter(ramDir, new ?SimpleAnalyzer(),? true );
    while ?(there?are?documents?to?index)? {
    ?create?Document?
    ramWriter.addDocument(doc);
    if ?(condition? for ?flushing?memory?to?disk?has?been?met)? {
    fsWriter.addIndexes(Directory[]?
    {ramDir} );
    ramWriter.close();
    ramWriter?
    = ? new ?IndexWriter(ramDir,? new ?SimpleAnalyzer(), true );
    }

    }

    Feedback

    # re: 提高Lucene索引性能  回復  更多評論   

    2007-05-09 16:23 by tjdxyelo
    看的不太明白

    不知道前景怎么樣

    # re: 提高Lucene索引性能  回復  更多評論   

    2007-05-09 16:24 by 信息空間
    哪位可以介紹下

    # re: 提高Lucene索引性能  回復  更多評論   

    2007-08-12 17:24 by dreamstone
    就是用ramDirectory做緩存吧,道理應該是一樣的。
    主站蜘蛛池模板: 久热中文字幕在线精品免费| 菠萝菠萝蜜在线免费视频| 中文字幕久精品免费视频| mm1313亚洲精品国产| 亚洲乱亚洲乱妇24p| 成人免费看黄20分钟| 亚洲成年人免费网站| 1000部啪啪未满十八勿入免费| 亚洲Aⅴ无码专区在线观看q| 国产免费一区二区三区在线观看| 国产精品久久久亚洲| 日韩视频在线观看免费| 18gay台湾男同亚洲男同| 国产h肉在线视频免费观看| 亚洲va在线va天堂va手机| 无码高潮少妇毛多水多水免费| 亚洲最大av资源站无码av网址| 免费精品一区二区三区在线观看| 亚洲国产av玩弄放荡人妇 | 亚洲 日韩 色 图网站| 成年女人喷潮毛片免费播放| 亚洲av日韩综合一区二区三区| 免费一区二区三区四区五区| 久久久WWW免费人成精品| 亚洲一区精品中文字幕| 成年女人男人免费视频播放| 午夜在线亚洲男人午在线| 亚洲中文字幕无码久久2017 | 亚洲 欧洲 自拍 另类 校园| 免费一级毛片一级毛片aa| 99精品免费视品| 亚洲不卡中文字幕| 亚洲国产成人精品91久久久| 国产成人久久AV免费| 亚洲一日韩欧美中文字幕在线| 亚洲国产成人久久笫一页| 四虎影视在线影院在线观看免费视频 | 亚洲伊人色欲综合网| jjizz全部免费看片| 欧美激情综合亚洲一二区| 日日噜噜噜噜夜夜爽亚洲精品|