Oprócz implementacji podstawowych mechanizmów wyszukiwarki, Apache Solr dostarcza mnóstwo rozbudowanych funkcjonalności, by pomóc deweloperowi dostarczyć najlepszy „User Expierence” dla użytkowników. Ten wpis ma za zadanie szybkie wprowadzenie w ten temat.
- Faceting. Jest to proces umożliwiający użytkownikom przeglądanie wyników wyszukiwania pogrupowanych za pomocą aspektów („facets”) opartych na zwróconych dokumentach. Dla przykładu, na stronie z ogłoszeniami o pracę oczekiwalibysmy, aby dało się przefiltrować wyniki wyszukiwania po mieście, kategorii, przemyśle czy nazwie firmy.W Apache Solr mamy trzy możliwe opcje facetingu:
– field faceting – wyniki pogrupowane są po unikalnych wartościach znalezionych w wybranym polu.http://localhost:8983/solr/jobs/select?q=title:Java Developer&rows=0 &facet=true &facet.field=category
– query faceting – do zapytania wyszukujacego przekazujemy rowniez zapytania (queries), których wyniki chcielibysmy pogrupować. Na przykładzie aplikacji z ogłoszeniami o pracę, „query faceting” można wykorzystąc do zaprezentowania użytkownikowi ilość ofert spełniających jego kryteria i zlokalizowanych w Warszawie i Krakowie lub Lublinie.
http://localhost:8983/solr/jobs/select?q=title:Java Developer&rows=0 &facet=true &facet.query=city:("Warszawa" OR "Kraków") &facet.query=city:("Lublin")
– range faceting – pozwala uzyskiwać wyniki facetingu dla zakresu dat, kwot czy wartości numerycznych. W powyższym przykładzie, można tego użyć do prezentacji użytkownikowi ilości wyników spełniających jego kryteria w rozbiciu na przedziały oferowanych zarobków.
http://localhost:8983/solr/jobs/select?q=title:Java Developer&rows=0 &facet=true &facet.range=price &facet.range.start=0 &facet.range.end=20000 &facet.range.gap=500
- Spell-checker. W erze urządzeń mobilnych i powszechnego dostępu do internetu poprawa pisowni to podstawa zbierania informacji od użytkownika. W Apache Solr spell-checker działa w dwóch trybach:
– automatycznej korekty, jeśli przekręcona fraza znajduje się w indeksie,
– „Czy chodziło Ci o …”, silnik Solr potrafi oprócz wyników wyszukiwania podpowiedzieć zapytanie, które może zwrócic bardziej dopasowane wyniki. Trzeba podkreślić, że podpowiedzi generowane sa na podstawie danych w indeksie. - Hit-highlight. Funkcja szczegolnie przydatna do pracy z dokumentami z dużą ilością tekstu, gdyż pozwala na natychmiastowe odnalezienie wyszukiwanej frazy wewnątrz dokumentu. Dopasowane fragmenty dokumenty wybierane i zwracane są automatycznie. Jako, że „hit-highlighting” w zbiorze wynikowych dokumentów musi ponownie przeanalizować tekst , dlatego przy zwracanie np 1000 dokumentów jednocześnie można odczuć spadek wydajności wyszukwiania.Trzeba pamietać, że każda z powyższych funkcji dostępna jest jako komponent, który moża zostać zarejstrowany/odrejestrowany od dowolnego „request-handler’a” obsługującego żądania HTTP.
- Wyszukiwanie geoprzestrzenne. W Apache Solr można indeksować, wyszukiwać oraz sortować dane przestrzenne i odległości pomiędzy nimi. Dzięki temu możliwe jest wyszukiwanie dokumentów względem wybranego punktu lub na danym obszarze. Funkcjonalność realizowana jest za pomocą dwóch rodzajów operacji:
– wolniejszej, opartej na indeksowaniu pary: szerokość i długość geograficzna oraz liczeniu odległości pomiędzy poszczególnymi dokumentami na etapie wyszukiwania. Wykorzystywana do odnajdowania konkretnych lokalizacji.
– oraz szybszej ale i bardziej skomplikowanej, wykorzystującej modele figur geometrycznych (w szczególności modelowanie wielokątne). W tym podejściu dla dokumentu idenksowane są dodatkowo kształy jako serie współrzędnych siatki. Umożliwia efektywne wyszukiwanie dokumentów na zadanych obszarach, np. placówek dyplomatycznych w danym kraju, wojewodztwie itd. Używa drzew prefixowych do reprezentacji modelu ziemi znanych w GeoHash.