Szybkie spojrzenie – Solritas

Obserwując listy dyskusyjne możemy trafić na rozmowy o funkcjonalności Solr, której nazwa brzmi dość dziwnie – Solritas. Co to za funkcjonalność ? Jakie ma zastosowanie ? Aby poznać odpowiedzi na te pytania zapraszam do lektury dalszej części wpisu.

Należy pamiętać, iż opisywana funkcjonalność dostępna jest w Solr od wersji 1.4. Dokładniej, w Solr w wersji 1.4 oraz 1.4.1 funkcjonalność jest udostępniania w Solr, jako dodatek dostępny w katalogu contrib. Natomiast w wersji 4.0 (trunk w svn) jest to już jedna ze standardowych funkcjonalności.

Solritas, czyli co ?

Przeglądając plik solrconfig.xml dostarczany z przykładową konfiguracją najnowszych wersji Solr możemy trafić na następującą definicję:

<requestHandler name="/browse">
   <lst name="defaults">
      <str name="wt">velocity</str>
      <str name="v.template">browse</str>
      <str name="v.layout">layout</str>
      <str name="title">Solritas</str>

      <str name="defType">dismax</str>
      <str name="q.alt">*:*</str>
      <str name="rows">10</str>
      <str name="fl">*,score</str>
      <str name="facet">on</str>
      <str name="facet.field">cat</str>
      <str name="facet.field">manu_exact</str>
      <str name="facet.mincount">1</str>
      <str name="qf">text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4</str>
      <str name="hl">on</str>
      <str name="hl.fl">text features name</str>
      <str name="f.name.hl.fragsize">0</str>
      <str name="f.name.hl.alternateField">name</str>
   </lst>
</requestHandler>

Bliższe przyjrzenie się powyższej konfiguracji może dać już odpowiedź osobie, która miała do czynienia z różnymi formatami szablonów. Powyższy wpis definiuje handler oparty o solr.SearchHandler, ale z innym, niż można by było podejrzewać response writeremVelocityResponseWriter. Umożliwia on przetwarzanie wyników odpowiedzi z wykorzystaniem systemu szablonów jakim jest Velocity (http://velocity.apache.org/). Dzięki wykorzystaniu takiego rozwiązania jesteśmy w stanie w bardzo szybkim czasie stworzyć prototyp i zaprezentować wyniki wyszukiwania w przystępny, dla np. użytkownika biznesowego, sposób. Nie ma konieczności pisania od podstaw aplikacji wykorzystującej Solr – tworzymy własny szablon i gotowe, możemy korzystać z Solr, który będzie opakowywał wyniki wyszukiwania w nasz szablon.

Konfiguracja

Powyżej przedstawiona konfiguracja została skopiowana z przykładowej konfiguracji dostarczanej z Solr. Co jednak oznaczają poszczególne parametry i jakie mamy możliwości wpływania na zachowanie Velocity ?

Aby zacząć korzystać z Solritas, należy wykonać kilka zmian w konfiguracji:

  1. Dodać informacje o tym, że chcemy wykorzystywać VelocityResponseWriter.
  2. Dodać odpowiednią definicję handlera (określającą wykorzystanie odpowiedniego formatu odpowiedzi i konfiguracji Velocity, na przykład taką jak przedstawiona powyżej).
  3. W przypadku korzystania z Solr w wersji 1.4.x należy zadbać o odpowiednie odpowiednie wersje bibliotek (należy skopiować je z katalogu /contrib/velocity/src/main/lib do katalogu z bibliotekami rdzenia, w którym chcemy użyć Solritas). Te biblioteki to:
    1. apache-solr-velocity-1.4.dev.jar
    2. commons-beanutils-1.7.0.jar
    3. commons-collections-3.2.1.jar
    4. velocity-1.6.1.jar
    5. velocity-tools-2.0-beta3.jar

Po spełnieniu powyższych warunków i uruchomieniu Solr możemy sprawdzić, czy funkcjonalność działa. W tym celu należy dowolną metodą (np. za pomocą przeglądarki) wejść na adres: http://localhost:8983/solr/browse. Naszym oczom powinnien ukazać się prosta formatka umożliwiająca wyszukiwanie, posiadająca funkcjonalność autocomplete oraz pokazująca prosty faceting.

Ale co z tymi parametrami ?

Solritas, czy inaczej, VelocityResponseWriter posiada szereg parametrów pozwalających konfigurować jego zachowanie. Te parametry to:

  • v.template – nazwa szablonu Velocity, który ma zostać użyty do wyświetlenia strony. Nazwę szablonu podajemy bez rozszerzenia ’.vm’. W przypadku braku tego parametru zostanie wybrany domyślny szablon o nazwie default.
  • debugQuery – podobnie jak w przypadku zwykłych zapytań przy pomocy metody GET, tak samo w tym wypadku istnieje możliwość pobrania dodatkowych informacji dotyczących przetwarzania zapytania. W przypadku ustawienia tego parametru na wartość true, oprócz dodatkowych informacji w stopce strony, każdy wynik będzie zawierał dodatkowe informacje diagnostyczne.
  • v.json – parametr umożliwiający opakowanie odpowiedzi Velocity w funkcję JSON`a o nazwie podanej jako wartość parametru.
  • v.layout – nazwa szablonu, który będzie zawierał szablon zdefiniowany w parametrze v.template. W tym wypadku zawartość szablonu zdefiniowanego w parametrze v.template zostanie umieszczona w zmiennej $content w celu użycia w szablonie zdefiniowanym w opisywanym parametrze.
  • v.base_dir – określa katalog z którego mają być ładowane szablony. Wartość domyślna parametru to conf/velocity/.
  • v.properties – określa plik z konfiguracją Velocity. Domyślna wartość parametru to velocity.properties.
  • v.contentsType – ustawia nagłówek HTTP odpowiedzialny za przenoszenie informacji o rodzaju treści.

Kontekst Velocity

Osoby, które miały styczność z Velocity wiedzą, iż w tzw. kontekście można umieszczać obiekty klas pomocniczych, ułatwiające generowanie strony przez szablony. VelocityResponseWriter udostępnia w swoim kontekście szereg takich właśnie helperów, pod odpowiednimi skrótami dostępne są następujące klasy pomocnicze:

  • esc – instancja EscapeTool
  • date – instancja ComparisonDateTool
  • list – instancja ListTool
  • math – instancja MathTool
  • number – instancja NumberTool
  • page – instancja PageTool
  • sort – instancja SortTool
  • request – obiekt klasy SolrQueryRequest
  • response – obiekt klasy SolrQueryResponse

Po więcej informacji na temat poszczególnych klas pomocniczych zapraszam na http://velocity.apache.org/.

Słów kilka na koniec

Jeżeli potrzebujemy szybko wygenerować graficzny interfejs użytkownika i pokazać go, gdzieś dalej, to Solritas będzie bardzo dobrym rozwiązaniem. Bez pisania dodatkowej warstwy jesteśmy w stanie szybko zdefiniować szablon i pokazać wyniki wyszukiwania w formie bardziej przystępnej dla na przykład osób nie technicznych.

Jako, że jest to jeden z pierwszych wpisów otwierający serię „szybkich spojrzeń” na mniej lub bardziej znane funkcjonalności Solr wszystkie uwagi, pomysły i spostrzeżenia będą bardzo mile widziane. Zapraszam do komentowania.

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