![](/img/trans.png)
[英]Lucene changing from RAMDirectory to FSDIrectory - Content-Field missing
[英]How to load an FSdirectory index file as a RAMdirectory in Lucene?
我有一個硬盤索引文件作為FS目錄,大小約為2GB。 我想在ram中加載它以獲得更好的搜索速度。 我使用后面的代碼:
Directory dic=new RAMDirectory(FSDirectory.open(new File("file path")), IOContext.DEFAULT);
但我不確定它是否有效。 有誰知道它的工作與否? 還有什么方法比這更好嗎?
我會很高興有任何建議。謝謝。
是的,您可以像這樣構建RAMDirectory,但在您的情況下強烈建議不要這樣做。 RAMDirectory不適用於大型數據集(超過100MB)。 它將非常GC密集,長期構建和消耗寶貴的JAVA堆空間。
如果您有性能問題,請確保遵循此lucene常見問題解答中描述的所有指導原則
不要忘記,為了獲得下降搜索速度,操作系統需要將索引的某些部分緩存到內存中。 為此,您必須為操作系統提供一些免費的mem。 如果您有16Gb的物理RAM和8gb索引,則應該將jvm Xmx配置為8g。 檢查mem的一個不錯的linux工具是htop,它會將用於進程的RAM打印為綠色(您的堆空間),將RAM用作文件緩存作為黃色(索引數據)。
一些開發人員在應用程序啟動時執行預熱查詢,以防止第一個用戶在索引由os filecache加載時被卡住幾秒鍾。
然后,如果你仍然認為你可以獲得更好的性能,你可以嘗試一些RAMfs的技巧。 但是我懷疑你可以獲得比MMapDirectory更好的表現更好的表現和jvm。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.