en

Indeksowanie dokumentów nie wartościuje ich w żaden sposób - tak samo traktowane są drafty dokumentów zapisane na dysku jaki i jego finalna wersja. Dobrze więc aby użytkownicy mogli oceniać przydatność poszczególnych dokumentów i w ten sposób wpływać na ich pozycję na liście wyników wyszukiwania. Idea sama w sobie bardzo słuszna, jednak w przypadku indeksu opartego o Apache Solr nie jest to trywialne zadanie, głównie z powodu braku funkcjonalności aktualizowania wpisów w indeksie. Solr pozwala tylko nadpisać cały dokument porównując przypisany do niego identyfikator. W praktyce Enterprise Search oznacza to konieczność ponownego zindeksowania dokumentu, a więc także pobranie go z repozytorium, wyekstrahowanie treści i ostatecznie dodanie zewnętrznych wartości. Proces taki nazywa się "enrichingiem" i jest dość kosztowny.

Na szczęście Solr udostępnia nam też pewien mechanizm, który może nam tu pomóc. Mowa tutaj o polach typu ExternalFileField, które odpowiednie wartości pobierają z pliku na dysku. My poszliśmy krok dalej i rozszerzyliśmy Solr o własny typ pola, który pobiera dane bezpośrednio z bazy danych SQL, gdzie składowane są przez UI pozwalający na ocenianie dokumentów.

Zalety takiego rozwiązania są oczywiste - dane, które mogą dość często się zmieniać są odizolowane od samego indeksu zawierającego treści zindeksowanych dokumentów, a my dostajemy możliwość podbijania (boost) wysoko ocenionych dokumentów na liście wyników wyszukiwania (i oczywiście analogicznie obniżania pozycji dokumentów ocenionych negatywnie), sortowania wyników po ocenie użytkowników oraz zwracania sumarycznej oceny razem z dokumentem w wyniku wyszukiwania.

Z drugiej strony tego typu dynamiczne pole generuje nam pewien problem. Jeśli chcemy móc sortować po takich wartościach Solr praktycznie wymaga, aby wartości pola dla każdego dokumentu były załadowane do pamięci - musimy więc utrzymywać w pamięci strukturę, która ma tyle elementów, co dokumentów w indeksie. W przypadku większych kolekcji może to powodować wyższe zapotrzebowanie na pamięć operacyjną aby system wyszukiwania działał sprawnie.

Na koniec fragment interfejsu użytkownika, który jest końcówką opisanego powyżej mechanizmu:

Więcej: Enser

Autor: Maciej Liżewski, 3e Software House

RODO

Wyrażam zgodę, aby 3e sp. jawna zbierała, katalogowała, analizowała i podejmowała automatyczne decyzje o adresach internetowych połaczonych z urządzeniem, którego używam a także informacji o samym urządzeniu, w tym jego typie, wersji zainstalowanego oprogramowania w celu obserwacji moich aktywności w internecie (stworzenia profilu użytkownika). Automatyczne podejmowanie decyzji nie dotyczy danych wrażliwych. Zgoda pozostaje w mocy tak długo, jak długo istotne pozostają dane, dla których została wyrażona, lub do czasu, gdy któraś ze Stron zgodę wycofa. Cofnięcie zgody będzie skutkować usunięciem danych.