Pracuję właśnie nad mechanizmem completion (autocomplete) w wyszukiwarce 4programmers.net. Chodzi o to aby wyszukiwarka potrafiła podpowiedzieć tytuły - np. wątków, po wpisaniu pierwszych liter. (więcej o tym w wątku: Autocomplete w polu wyszukiwarki)
Chciałbym aby wyszukiwarka brała pod uwagę popularność danego wątku (liczbę głosów oddanych na 1 post), liczbę odpowiedzi czy datę ostatniego postu. I tak np. po wpisaniu słowa ile
, na górze wyników miałby znaleźć się wątek Ile zarabiacie
(bo jest dość popularny). W tym celu trzeba zapisywać do elasticsearch "wagę" danej podstrony po której będą sortowane wyniki. I tutaj następuje moje pytanie, jaki wzór najlepiej by się tutaj sprawdził?
Np.: waga = (1 * ilosc_odpowiedzi) + (2 * ilosc_lapek_w_gore) + (( timestamp_napisania_ostatniego_posta - timestamp_roku_2000) / 600000)
?
Oczywiście, im starsze wątki (brak aktywności), tym powinny mieć niższą wagę. Wstawiłem ostatnie 1000 wątków z kategorii Off-topic do Excela. Możesz sobie popatrzeć: https://docs.google.com/spreadsheets/d/1to9CIRXwlHP50BnqAcO6anrwaUEMzQdrGyEoZQi28_s/edit?usp=sharing
Po zastosowaniu tego wzoru i szukaniu po słowie jakie
wynik jest następujący:
Może macie jednak lepszy pomysł?