Krótkie spojrzenie: frange

W Solr 1.4 pojawił się nowy typ zapytań funkcyjnych zwanych frange. Służą one do wyszukiwania informacji z danego przedziału. Według twórców Solr zapytania te powinny być znacznie szybsze (w niektórych przypadkach testy wykazały nawet 40-krotny wzrost wydajności) od zwykłych zapytań. Stwierdziłem, że przeprowadzę prosty test sprawdzający, czy można spodziewać się takich wzrostów wydajności w przypadku zapytań o przedziały.

Zadawanie zapytań

Aby skorzystać z zapytań frange należy zmodyfikować składnię zapytania. Do tej pory, zapytanie o zakres danych mogło wyglądać w następujący sposób:

fq=test_si:[0+TO+10000]

w tym momencie, należy zadać to zapytanie w poniższy sposób:

fq={!frange l=0 u=10000}test_si

Oczywiście, możliwe jest również składanie zapytań o zakresy inne, niż liczbowe, na przykład:

fq={!frange l=adam u=mariusz}imie

Wydajność

Sama logika testu jest dość prosta. Struktura indeksu zawiera dwa pola: id, czyli unikalny identyfikator oraz pole namestr (typu String) w którym generuje wartości o które będę się pytał. Zaindeksowałem w ten sposób 100.000 dokumentów. Dodatkowo w każdym z dokumentów termy w polach są unikalne, tak, aby w łatwy sposób móc określić procent termów pokrytych przez dane zapytanie. Następnie zacząłem zadawać zapytania pokrywające pewien procent termów w indeksie. Każde zapytanie zadawałem kilkukrotnie uśredniając wyniki. Poniższa tabela ilustruje wynik testu:

[table “5” not found /]

Jak widać standardowe zapytanie o przedział danych jest szybsze tylko w przypadku zapytania, które pokrywa małą ilość termów w polu. Już od 5% termów nowy typ zapytań o przedział jest dużo szybszy, co widać w przypadku większego pokrycia, np. 50%. Co ciekawe uzyskujemy wzrost wydajności kilkukrotny, co napawa optymizmem na jeszcze szybsze wyszukiwanie.

Na koniec

Wyniki mojego testu różnią się pod względem wydajności z tym co napisał Yonik Seeley na swoim blogu (wiąże się to m.in. z tym, że dane były przygotowane szybko), jednak co by nie mówić, testy pokazują wzrost wydajności w przypadku zapytań wykorzystujących frange.

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