2010-10-12 17 views
9

Obecnie wywołuję metodę optymalizacji indeksu po zakończeniu pisania. Ponieważ mój zestaw danych jest ogromny, potrzeba było dużo czasu (i potrzebuje więcej miejsca (2 * rzeczywisty rozmiar)), aby zoptymalizować indeks. Bardzo mnie to niepokoi, ponieważ wiele dokumentów często znajduje się w indeksie.Czy konieczne jest zoptymalizowanie indeksu lucenu po zapisie?

Więc

  1. to jest ok, aby wyłączyć Optymalizacja?
  2. Jakie są implikacje związane z wydajnością, np. O ile wolniejsze jest wysyłanie zapytań, gdy nie jest ono optmizowane?

Cheers

Odpowiedz

14

Lucene FAQ mówi:

Czym jest optymalizacja indeksu i kiedy należy go używać?

Klasa IndexWriter obsługuje metodę optimize(), która kompaktuje bazę danych indeksu i przyspiesza kwerendy. Możesz skorzystać z tej metody po wykonaniu pełnego indeksowania zestawu dokumentów lub po stopniowych aktualizacjach indeksu. Jeśli aktualizacja przyrostowa powoduje częstsze dodawanie dokumentów, optymalizację należy wykonywać tylko raz na jakiś czas, aby uniknąć dodatkowych kosztów związanych z optymalizacją.

Jeśli zdecyduję się nie optymalizować indeksu, kiedy usunięte dokumenty rzeczywiście zostaną usunięte?

Dokumenty, które zostały usunięte, są oznaczone jako usunięte. Jednak przestrzeń, którą konsumują w indeksie, nie jest odzyskiwana, dopóki indeks nie zostanie zoptymalizowany. Ta przestrzeń zostanie ostatecznie odzyskana, gdy do indeksu zostanie dodanych więcej dokumentów, nawet jeśli indeks nie zostanie zoptymalizowany.

+0

to bardzo pomocne ....... :) – RameshVel

1

Znasz swoje dane najlepiej, więc proponuję wykonać kilka testów, aby zmierzyć, jak szybko twoje zapytania działają z krokiem optimize i bez niego.

Zgodnie z javadocs, "w środowiskach z częstymi aktualizacjami, optymalizacja najlepiej wykonywać w czasie niskiej głośności, jeśli w ogóle". Powinieneś optymalizować tylko wtedy, gdy jest to konieczne. Jeśli od ostatniej optymalizacji zmieniło się tylko 5% twoich dokumentów, nie jest to konieczne, więc sprawdź, jak często zmieniają się twoje dokumenty. Może rzadziej mówisz o optimise, co raz na kilka godzin lub raz dziennie.

Zobacz także this thread, w którym odradzają wywoływanie optymalizacji w środowisku, którego indeksy są stale aktualizowane, a zamiast tego ustawiają niski mergeFactor.

+0

dzięki za link .. :) – RameshVel

Powiązane problemy