Ile razy zdarzyło Ci się stworzyć wyszukiwarkę dla użytkowników i później usłyszeć pytanie dlaczego konkretny rezultat znalazł się w wynikach wyszukiwania? Mnie niejednokrotnie. Częstotliwość podobnych pytań wzrasta wraz z ilością pól, które nie są widoczne na liście rezultatów, a po których również się wyszukuje. Dokładając do tego wyszukiwanie pełnotekstowe, które najprawdopodobniej zawiera „ukrytą” logikę analizy tekstu, sprawiamy, że z biegiem czasu samemu będzie nam ciężko od ręki odpowiedzieć na to pytanie. A gdyby tak od razu pokazać użytkownikowi dlaczego znalazł dany dokument? Elasticsearch daje nam taką możliwość i zaraz Ci o niej opowiem.

Highlighting

Narzędziem, które chciałbym dzisiaj omówić jest highlighting i właśnie pod takim hasłem znajdziesz je w dokumentacji Elasticsearcha. To może po kolei…

Ale… o co chodzi?

Obstawiam, że kojarzysz feature wyszukiwarki Google (i wielu innych), który na liście rezultatów pokazuje fragmenty wyszukanego tekstu wraz z pogrubionymi słowami kluczowymi. Przykładowo wyszukując frazę elasticsearch how to start otrzymałem coś takiego:

Jak widać, wyrażenia takie jak Elasticsearch, start, czy get started zostały pogrubione. I właśnie taki efekt możemy osiągnąć wykorzystując highlighting z Elasticsearcha.

Jak tego użyć?

Bardzo prosto. Jeżeli nasze podstawowe wyszukiwanie wygląda tak:

to to samo zapytanie z najprostszym użyciem highlightingu prezentuje się następująco:

Odpowiedzi na powyższe zapytania będą różniły się analogicznie – te z użyciem „zakreślacza” będzie bogatsze o pole highlight zawierające informacje o miejscu znalezienia dopasowania. Dopasowany fragment tekstu opakowywany jest domyślnie w tagi <em></em>.

W powyższym przykładzie wyszukujemy tylko po jednym polu, więc prosimy Elasticsearcha, żeby zwrócił nam informacje o dopasowaniach dla tego konkretnego pola. Niemniej jednak nie jest problemem prosić o zwrócenie dopasowań tylko z części pól, po których wyszukujemy. Dodatkowo, na wiele sposobów, możemy określić również w jakiej formie owe odpowiedzi mają do nas wracać.

Możliwości konfiguracyjne

Co w takim razie możemy skonfigurować? Przede wszystkim rodzaj algorytmu wykorzystywanego do znalezienia dopasowań. Ma to szczególne znaczenie gdy do naszego Elasticsearcha wrzucamy długie teksty, co jest zresztą zaznaczone w dokumentacji.

Oprócz tego dla każdego pola możemy określić, czy chcemy otrzymywać całą zawartość pola z zaznaczonymi dopasowaniami, czy tylko jego fragmenty (znów: przydatne przy długich treściach). Jeżeli zdecydujemy się na fragmenty to możemy określić ich maksymalną ilość lub to czy mają obejmować pełne zdania, czy słowa.

Elasticsearch pozwala nam powiedzieć również ile tekstu ma zwracać w przypadku nieznalezienia dopasowania w danym polu i czy w ogóle ma to robić. Możemy również określić w jaki sposób mają zostać oznaczone zwracane do nas dopasowania, jeżeli domyślne tagi <em></em> nam nie pasują.

Po szczegóły i więcej informacji odsyłam do dokumentacji.

Zalety

Jest szybko, łatwo i przyjemnie 🙂

Wady

Zakreślanie dopasowań jest dosyć kosztowną operacją, szczególnie gdy chcemy robić je na dużej ilości pól lub na polach zawierających dużo tekstu (o czym zdążyłem się już przekonać). Jednak użyte z rozwagą nie powinno sprawiać większych problemów.

The End

To tyle w temacie. IMHO highlighting jest jedną z tych funkcjonalności, którą użytkownicy wyszukiwarek przyjmą z otwartymi ramionami. Niezależnie od tego, czy będziesz lub nie będzie wdrażał(a) highlighting dla użytkowników Twojej wyszukiwarki, to zawsze możesz użyć go jako furtki do sprawdzenia dlaczego dany dokument znalazł się w wynikach wyszukiwania, kiedy tylko padnie taka prośba.


Bądź na bieżąco!

Podobają Ci się treści publikowane na moim blogu? Nie chcesz niczego pominąć? Zachęcam Cię do subskrybowania kanału RSS, polubienia fanpage na Facebooku, zapisania się na listę mailingową:

Dołączając do newslettera #NoweRozdanie2 otrzymasz dostęp do dodatkowych materiałów:

  • PDF: „Jednoosobowa działalność gospodarcza krok po kroku” (do artykułu)
  • PDF: „FAQ: Jak pracuje się dla Roche/Sii?” (do artykułu)
  • PDF: „Jak zmniejszyć prawdopodobieństwo wystąpienia kontroli i co zrobić kiedy urzędnik zapuka do Twoich drzwi?” (do artykułu)

Powyższe dane są przechowywane w systemie Mailchimp i nie są udostępniane nikomu innemu. Więcej szczegółów znajdziesz na stronie polityki prywatności.

lub śledzenia mnie na Twitterze. Generalnie polecam wykonanie wszystkich tych czynności, bo często zdarza się tak, że daną treść wrzucam tylko w jedno miejsce. Zawsze możesz zrobić to na próbę, a jeśli Ci się nie spodoba – zrezygnować :)

Dołącz do grup na Facebooku

Chcesz więcej? W takim razie zapraszam Cię do dołączenia do powiązanych grup na Facebooku, gdzie znajdziesz dodatkowe informacje na poruszane tutaj tematy, możesz podzielić się własnymi doświadczeniami i przemyśleniami, a przede wszystkim poznasz ludzi interesujących się tą samą tematyką co Ty.

W grupie Programista Na Swoim znajdziesz wiele doświadczonych osób chętnych do porozmawiania na tematy krążące wokół samozatrudnienia i prowadzenia programistycznej działalności gospodarczej. Vademecum Juniora przeznaczone jest zaś do wymiany wiedzy i doświadczeń na temat życia, kariery i problemów (niekoniecznie młodego) programisty.

Wesprzyj mnie

Jeżeli znalezione tutaj treści sprawiły, że masz ochotę wesprzeć moją działalność online, to zobacz na ile różnych sposobów możesz to zrobić. Niezależnie od tego co wybierzesz, będę Ci za to ogromnie wdzięczny.

Postaw mi kawę na buycoffee.to

Na wsparciu możesz także samemu zyskać. Wystarczy, że rzucisz okiem na listę różnych narzędzi, które używam i polecam. Decydując się na skorzystanie z któregokolwiek linku referencyjnego otrzymasz bonus również dla siebie.

Picture Credits