Funkcja do pobierania cen w Solr

,

W trakcie prac nad nową wyszukiwarką w mojej obecnej pracy, natrafiłem na problem związany z aktualnością danych. Dokładniej, chodzi o sortowanie produktów po cenie, która w zależności od aktywnych (przyszłych) promocji, może ulec zmianie.

Odstęp między kolejnymi cyklami indeksacji był na tyle spory, że dane z dużym prawdopodobieństwem byłyby niespójne. Rozwiązaniem problemu okazało się zapisanie przyszłych cen produktu w specjalnym formacie oraz napisanie funkcji w Solr, która będzie w stanie je odczytywać.

Format danych

Informacje o zmienności cen zapisane są jako ciąg znaków, według wzoru:

Gdzie data jest formacie unix timestamp. Dla przykładu:

Produkt do 1 stycznia 2017 będzie kosztował 100 zł. Od godziny 3 rano do 12 w południe będzie kosztował 63,30 zł, po czym jego cena ponownie wróci 100 zł.

Instalacja

1. Klonujemy projekt.

2. Kompilujemy źródła (wymagany Maven).

3. Kopiujemy wygenerowany plik jar do katalogu contrib Solr.

4. Dodajemy definicje w pliku solrconfig.xml.

Użycie

Definicja funkcji odczytującej powyższy format jest następująca:

Opis parametrów:

Parametr Wymagany Opis
source tak Wartość, która stanowi źródło danych. Może być nazwa pola lub wartość typu string (w cydzysłowie).
timestamp nie Znacznik czasu, jeśli nie zostanie podany wykorzystywany jest aktualny czas.

Na zakończenie warto wspomnieć, że funkcja może być użyta nie tylko do sortowania. Również dobrze sprawdza się przy filtrowaniu oraz listingu (parametr fl).

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *