12 第二章 索引 規則 Norms

2021-08-31 12:29:42 字數 557 閱讀 7366

在索引階段,文件(document)中每個被索引的域(field)都可能有乙個優先權重因數(boost),它是乙個浮點值。該值由三部分聯合計算得到:文件自身的boost值;每個域的值;lucene根據各詞元在域中的頻度算出的boost值;

得到最終的boost值後,lucene會通過一些巧妙的方法把它轉換成乙個位元組,並將其存入文件的各個域。待到搜尋階段,每個被查詢域的規則都將被載入到記憶體,將位元組解碼成浮點數並依此為該文件打分(打出的分數用來為文件排序)。

使用規則時經常遭遇的乙個問題是:查詢期間的高記憶體消耗。原因很明顯,每個文件的每個域的規則都要在記憶體中占用乙個位元組。如果你的索引檔案很大,其中包含了大量的文件,而每個文件又包含了許多域,那麼,大量記憶體的占用便是理所當然的!還好,你可以通過呼叫field.setomitnorms(true);將規則選項關掉,然而由於同時失去了boost的相關資訊,這一操作可能對排序存在著潛在的影響。好在這種影響不大,尤其是當各個域的長度差不多時,或者是你根本沒手動設定過boost值時。

注意一點:你需要在索引之前關閉規則選項!如果你想在索引中途做此事,那麼,你必選重建整個索引!

20 第二章 索引 緩衝

lucene在新增或刪除文件時,並不會立即將這些操作寫入磁碟,而是在記憶體中先做快取。毋庸置疑,這是針對io效能問題而作出的優良策略。在三種情況下,lucene會對緩衝區進行flush操作 1.快取區記憶體空間已滿 通過indexwriter的setrambuffersizemb 設定緩衝區大小。預...

MySQL第二章總結 Mysql第二章 儲存引擎

1 本章目標 儲存引擎 資料型別 重點 2 儲存引擎 在關係型資料庫中,資料儲存在表中,表由行和列組成。開發中,可能需要各種不同的表,有的表簡單,有的表複雜,有的表讀取快,有的讀取資料慢,有的表更新快等。根據對資料的不同的處理需求,使用不同的儲存引擎,可以將mysql資料庫的效能發揮到最大。查詢my...

領悟(第二章)

當火車緩緩駛進車站的時候,夜幕已經降臨了。終於到了!望著窗外鐵道兩旁的燈火,我的內心不禁再一次的激動起來,一路上對今後在這個大都市的未來生活的想象已經讓我從昨天晚上上車一直興奮到現在了!平常這個時候應該正和朋友們一起在酒吧聊天吧,朋友們,你們現在還在談論我來這裡的目的麼?說實話,這個問題連我自己都說...