2009-08-18 19 views

cevap

16

Dizini sabit diskte tutmak yerine RAM'de tutmanın bir yolu var mı? Genellikle daha hızlı indeksleme performansı için RAMDirectory sınıf

SampleUsage Lucene SSS

ImproveSearchingSpeed

den Ayrıca here

kullanma

Doküman sayısı yerine RAM kullanımı ile yıkamak ve olabildiğince büyük bir RAM tamponu olarak kullanmak en iyisidir.

Also check this question:

DÜZENLEME:RE: RamDirectory API RamDirectory bir bellekte yerleşik Dizin uygulamasıdır söylediği gibi. dizinde tarafından belirtilen, bu RAM içinde sadece bu indeks tutar RAMDirecory

RE: Bildiğim kadarıyla olarak önbelleğe alma, Lucene lütfen CachingWrapperFilter @ bakmak filtrelerin yardımıyla ve QueryWrapperFilter

+0

Teşekkür ederim Detaylı cevabınız için çok fazla. İki tane daha sorum var. İlk olarak, Lucene'nin dizini kısmen RAM'de saklayacak şekilde önbelleğe aldığını okudum. Ama RAMDirectory farklı, değil mi? Tüm endeksi RAM'de tutuyor mu? İkinci olarak, setRAMBufferSizeMB'yi gördüm, anladığım şey, arama yapmak yerine dizin oluşturmayı hızlandırmaktı. Arama yapmayı da hızlandırıyor mu? – elif

+0

oops, benim yazımı düzenleyecek – Narayan

+0

"ImproveSearchingSpeed" den: "IndexOnly ile readOnly = true" açın, bunu Lucene 4 + 'da nasıl yapacağınızı biliyor musunuz? Hiçbir örnek bulamadım ... – Gevorg

1

Bir RAM diski bunun için bir çözüm olabilir. Bir mini-NASIL belgesi http://www.vanemery.com/Linux/Ramdisk/ramdisk.html adresinde mevcuttur. RAM diskini dizin dizininiz olarak yerleştirin ve yapılmalı.

+0

Not arama sonuçlarını önbelleğe büyük için dizinler, "donanım" RAM diskleri de mevcuttur ... temelde bir sabit sürücü arayüzü ile cihaz, ancak plakalar yerine DRAM ile doldurulur. – erickson

+0

Cevabınız için teşekkür ederiz. Bunu düşündük. Ancak, işletim sisteminde bu kadar fazla deneyime sahip olmadığımız için bu seçeneği kullanma eğiliminde değiliz. İndeksi gözlemlemek/izlemek için bize daha az kontrol ve daha az imkan vereceğini düşünüyoruz. – elif

1

RAMDirectory belgelerine göz atın. İşte bir basic usage example. Bu sadece endeks yeterince küçük olduğunda çalışır.

+0

Ve cevapladığınız için teşekkürler. Hangi boyut küçük olabilir? Dizin yaklaşık 20 MB'tır ve 5 kattan fazla büyümesini beklemiyoruz. Bu yeterince küçük mü? – elif

+0

Rica ederim. 100 MB gerçekten yeterince küçük. Uygun JVM yığın boyutu ayarlarına sahip bir disk dizini kullanmayı düşünmelisiniz. Bu, uygulamayı her başlattığınızda yeniden indekslemek zorunda kalmanızı sağlar ve RAMDirectory kadar hızlı olabilir. Ayrıca bkz: arama hızı hakkında http://www.lucidimagination.com/Community/Hear-from-the-Experts/Articles/Scaling-Lucene-and-Solr. –

+0

Uygulamayı yeniden başlattığımda neden yeniden dizine giriyor? RAMDirectory kullanarak sabit diskteki dizini RAM'e okuyabileceğimi düşündüm. İndeksi RAM'e okumak istediğimde her an reindex zorunda mıyım? Bağlantı için teşekkür ederiz. – elif

İlgili konular