Solr 7.6.0 – pola uninvertible

Wraz niedawną publikacją Solr 7.6.0 pojawiła się możliwość ustawienia pola, bądź typu jako uninvertible. Pozwala to na kontrolę tego, co zrobi Solr z polem w przypadku kiedy konieczne będzie odwrócenie odwróconego indeksu, czyli podczas korzystania z takich funkcjonalności, jak faceting, czy sortowanie. Przyjrzyjmy się co daje nam nowa właściwość pól w Solr 7.6.0.

Przykładowa struktura danych

Zacznijmy od prostej struktury danych, która wygląda następująco:

Nic specjalnego, trzy pola w tym jeden identyfikator. Oczywiście, jeżeli zaindeksujemy przykładowe dane, mamy możliwość facetingu na każdym z wymienionych pól. W naszym przypadku zapytania takie jak poniższe powinny wykonywać się bez problemów, np:

Dodajemy właściwość uninvertible

Jeżeli zmodyfikujemy nasz przykład i dodamy właściwość uninvertible ustawioną na wartość true, która jest domyślną wartością tej właściwości, nic nie powinno się zmienić i nasze przykładowe zapytanie będzie dalej działać:

Zachowanie pól z uninvertible=false

Zmodyfikujmy nasz przykład tak, aby pole title miało właściwość uninvertible ustawioną na wartość false:

Jeżeli ponownie zadalibyśmy nasze zapytanie do Solr, zachowanie zmienia się. Zamiast wyników facetingu dostalibyśmy pustą tablicę. Dalczego? Ponieważ w przypadku ustawienia pola jako uninvertible=false Solr nie pozwoli na zbudowanie field cache, który to wykorzystywany jest w przypadku braku doc values. Oczywiście wiemy, że skorzystanie ze struktury doc values nie jest możliwe w przypadku pól analizowanych.

Wykorzystanie

Właściwość uninverible możemy wykorzystać wtedy, kiedy chcemy zabezpieczyć naszą instancję lub klaster przed intensywnym wykorzystaniem pamięci w związku z field cache. Przykładem może być właśnie wyłączenie funkcjonalności takich jak faceting, czy sortowanie na polach, które podlegają analizie, a tym samym mają potencjalnie dużo unikalnych wartości, co może powodować znaczne wykorzystanie pamięci.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *