Wraz ze zbliżającą się wielkimi krokami premierą Solr 7.0 postanowiliśmy podzielić się z Wami ważnymi informacjami dotyczącymi zmian, jakie zajdą w tym silniku wyszukiwania. Na pierwszy ogień pola typu Point.
Nowy typ pól
Oprogramowanie się rozwija, zmieniają się algorytmy, dodawane są nowe funkcjonalności, zmieniane są struktury danych. Jedną ze zmian jakie zaszły pomiędzy kolejnymi wersjami Lucene są pola typu Point. Pola te zostały wprowadzone już w Lucene 6.x, ale Solr musiał poczekać do wersji 7, aby pojawiło się dla nich wsparcie.
Pola typu Point
Pola typu Point zbudowane są w oparciu o tzw. bloki K-D, które podczas indeksowania i wyszukiwania rekurencyjnie dzielą przestrzeń wartości na miejsze prostokątne przestrzenie umożliwiając szybkie wyszukiwanie. Z punktu widzenia Lucene wykorzystywane są po prostu tablice typu byte. Wydaje się to rozwiązaniem prostym, ale jest bardzo wydajne i widać to w testach.
Po stronie Solr konfiguracja jest bardzo prosta i wygląda następująco:
<fieldType name="pint" class="solr.IntPointField" docValues="true"/> <fieldType name="pfloat" class="solr.FloatPointField" docValues="true"/> <fieldType name="plong" class="solr.LongPointField" docValues="true"/> <fieldType name="pdouble" class="solr.DoublePointField" docValues="true"/> <fieldType name="pints" class="solr.IntPointField" docValues="true" multiValued="true"/> <fieldType name="pfloats" class="solr.FloatPointField" docValues="true" multiValued="true"/> <fieldType name="plongs" class="solr.LongPointField" docValues="true" multiValued="true"/> <fieldType name="pdoubles" class="solr.DoublePointField" docValues="true" multiValued="true"/>
Jedna rzecz rzuca się w oczy – wszędzie wykorzystywane doc values. Jest to konieczne jeżeli chcemy korzystać z funkcjonalności, które korzystają z FieldCache. Pola typu Point nie wspierają FieldCache, a tym samym jesteśmy „skazani” na doc value, co oczywiście nie jest niczym złym. Musimy tylko pamiętać, iż jeżeli chcemy sortować, wykorzystywać funkcje, czy facteting po polach typu Point musimy włączyć doc values.
Pola typu Trie
Co w takim wypadku dzieje się z polami typu Trie? Dokładnie to samo co z wcześniejszymi typami pól, które kiedyś były obecne w Solr, a teraz ich już nie ma. W wersji 7.0 Solr pola typu Trie oznaczone są jako przestarzałe, co oznacza, że w przyszłych wersjach Solr (najprawdopodobniej w wersji 8.0) zostaną one usunięte. Oczywiście, na razie, możemy dalej z nich korzystać, ale sugeruję myśleć o przesiadce na typ Point przy okazji najbliższej ponownej indeksacji danych.