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

Zamknij ten komunikat

Nasze strony wykorzystują pliki cookies.

Na naszych stronach używamy informacji zapisanych za pomocą cookies m.in. w celach reklamowych i statystycznych. Mogą też stosować je współpracujące z nami podmioty, takie jak firmy badawcze oraz dostawcy aplikacji multimedialnych. W każdej przeglądarce internetowej można zmienić ustawienia dotyczące cookies. Korzystanie z naszych serwisów internetowych bez zmiany ustawień dotyczących cookies oznacza, że będą one zapisane w pamięci urządzenia.