Jedną z wielu nowych funkcjonalności jakie przyniosła wersja 3.1 biblioteki Lucene i serwera wyszukiwania Solr jest FastVectorHighlighting, czyli nic innego jak usprawnione funkcjonalności odpowiedzialne za highlighting. Ze względu na to, że obecny dotychczas w Solr highlighting nie dość, że nie działał zbyt szybko, to mówiąc wprost potrafił zabić Solr przy dużej ilości danych, bądź bardzo długich polach tekstowych. Stwierdziłem, że warto przetestować wydajność nowej funkcjonalności.
Kilka słów na początek
Na początek kilka informacji o możliwościach nowego hightlightra w Lucene:
- wspiera pola oparte o N-gram
- wymusza wykorzystanie Java 5 lub wyższej
- bierze pod uwagę podbicia w celu nadawania ważności fragmentom tekstu
- jest bardzo szybki dla dużych dokumentów
Warto wspomnieć, iż obecny highlighter został oznaczony jako Deprecated zgodnie z ticketem SOLR-1696.
Jak został wykonany test ?
Do testów wykorzystałem indeks zawierający około 1.2 miliona dokumentów (zaindeksowane dane polskiej wikipedii – tylko najnowsze zmiany). Dla każdego z poniższych wyszukiwań wykorzystywałem duże pole testowe do podświetlenia, raz ze starym (hl.useFastVectorHighlighter=false), raz z nowym (hl.useFastVectorHighlighter=true) highlighterem. Testy wykonywane były na wyłączonym cache`u Solr. Przedstawiony w tabelce czas odpowiedzi, to średni czas z 10 kolejno zadanych zapytań z wyłączeniem czasu największego i najmniejszego. Poniżej wyniki tego prostego testu:
[table “7” not found /]Pomimo tego, iż test jest prosty pokazuje pewną prawidłowość – FastVectorHighlighter jest szybszy od dotychczasowego highlightera.
Co do samej jakości podświetleń nie udało mi się zauważyć większych różnic, aczkolwiek specyfika danych nie sprzyja takim obserwacjom.
O czym należy pamiętać ?
Należy pamiętać, że FastVectorHighlighter wymaga, aby pole na którym będzie działać, było odpowiednio zdefiniowane. Konieczne jest ustawienie atrybutów pola na następujące: termVectors=”true” termPositions=”true” termOffsets=”true”. W przeciwnym wypadku dalej będzie wykorzystywany stary mechanizm.
Podsumowując
Warto pamiętać, że test przeprowadzony przeze mnie nie jest dokładnym testem wydajności, a jedynie sprawdzeniem nowego mechanizmu w warunkach mniej lub bardziej przypominających produkcyjne. Pozwala to jednak stwierdzić, iż możemy spodziewać się zwiększonej wydajności podczas korzystania z nowej wersji highlightingu.