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 *