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:

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" docValues="true" />
<field name="title" type="text_general" indexed="true" stored="true" multiValued="false"/>
<field name="tags" type="string" indexed="true" stored="true" multiValued="true" />

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:

http://localhost:8983/solr/test/select?q=*:*&facet=true&facet.field=title

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ć:

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" docValues="true" />
<field name="title" type="text_general" indexed="true" stored="true" multiValued="false" uninvertible="true"/>
<field name="tags" type="string" indexed="true" stored="true" multiValued="true" />

Zachowanie pól z uninvertible=false

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

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" docValues="true" />
<field name="title" type="string" indexed="true" stored="true" multiValued="false" uninvertible="false"/>
<field name="tags" type="string" indexed="true" stored="true" multiValued="true" />

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 e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

We use cookies to personalise content and ads, to provide social media features and to analyse our traffic. We also share information about your use of our site with our social media, advertising and analytics partners. View more
Cookies settings
Accept
Privacy & Cookie policy
Privacy & Cookies policy
Cookie name Active
Save settings
Cookies settings