2
A
回答
4
VInt非常節省空間。理論上可以節省高達75%的空間。
在Lucene中,很多結構都是整數列表。例如,給定期限的文件清單,文件中條款的位置(和偏移量)等等。這些列表形成lucene數據的大部分。
想想Lucene索引數百萬文件需要數十GB的空間。將空間縮小一半以上可減少磁盤空間要求。雖然節省磁盤空間可能不是一個巨大的勝利,但考慮到磁盤空間便宜,真正的收益會降低磁盤IO。用於讀取VInt數據的磁盤IO低於讀取整數,自動轉換爲更好的性能。
1
VInt是指Lucene的可變寬度整數編碼方案。它用一個或多個字節對整數進行編碼,僅使用每個字節的低7位。對於除最後一個字節以外的所有字節,高位被設置爲零,這是長度的編碼方式。
1
對於第一個問題: 正整數的可變長度格式定義爲每個字節的高位指示是否還有更多字節需要讀取。低位7位作爲結果整數值中越來越多的有效位添加。因此,從零到127的值可以存儲在一個字節中,從128到16,383的值可以存儲在兩個字節中,依此類推。 https://lucene.apache.org/core/3_0_3/fileformats.html。
因此,要保存一個n個整數的列表,您需要的內存量是[例如] 4 * n個字節。但對於Vint,128以下的所有數字將僅使用1個字節存儲[依此類推],從而節省大量內存。
Vint提供了整數的壓縮表示,Shashikant的答案已經解釋了Lucene中壓縮的要求和好處。
相關問題
- 1. 什麼是Lucene中的TextFragement?
- 2. 什麼是Apache Lucene
- 3. lucene 4.5中的syns2index是什麼?
- 4. Lucene中的索引是什麼?
- 5. 在Lucene中使用的subReader是什麼?
- 6. Lucene:查詢的命中是什麼?
- 7. Lucene的ScoreDoc.score是什麼意思?
- 8. Lucene的:是什麼和過濾
- 9. [Lucene]什麼是IndexReader/Searcher的開銷
- 10. 什麼是lucene的tokenFilters命令?
- 11. 在Lucene的4是什麼AtomicReader和CompositeReader
- 12. Lucene的索引內存中的索引是什麼樣的?
- 13. 什麼等同於Lucene 4.1中Lucene 3.6的Document.setBoost()?
- 14. Lucene 2.9中INDEX.TOKENIZER與INDEX.ANALYZER的真正區別是什麼?
- 15. 什麼是Elastic/Lucene中的規範用於超越評分?
- 16. 當Luke觀看時,Lucene中'Rank'的實際含義是什麼?
- 17. 在lucene中索引布爾值的最佳選擇是什麼?
- 18. 不在列表中的lucene查詢語法是什麼?
- 19. 在Lucene中結合分析器的最佳實踐是什麼?
- 20. Lucene中布爾查詢的侷限性是什麼?
- 21. DBPedia-Spotlight中lucene索引文件的用途是什麼?
- 22. 什麼是Sitecore中Lucene Search的默認排序順序?
- 23. Lucene有什麼意義NumericUtils.IntToPrefixCoded
- 24. LOWERCASE_EXPANDED_TERMS在Lucene中做了什麼?
- 25. 是什麼在Lucene的查詢語法和和+的區別
- 26. 什麼是重建Lucene的索引的正確方法
- 27. Lucene的FloatField和FloatDocValuesField有什麼區別?
- 28. Lucene搜索有什麼好的選擇?
- 29. 什麼是Cassandra Lucene索引的不錯替代方案?
- 30. 在mac上安裝Lucene的步驟是什麼?
我知道這一點,但我想知道爲什麼lucene能完成這項工作? 爲什麼它不使用4字節的簡單整數(0 - 〜4,000,000,000)? – 2010-05-02 09:41:19