2015-01-23 17 views
10

W jaki sposób można skonfigurować usługę Elasticsearch tak, aby zwracała spersonalizowane wyniki?Spersonalizowane wyniki wyszukiwania dla Elasticsearch

Na przykład chciałbym, aby wyniki zwracane do określonego użytkownika były wyższe, gdyby kliknęły na wynik poprzednio, lub gdyby były oznaczone gwiazdką, co skutkuje przeszłością. Możesz również mieć opcję "ukryj", która popycha wyniki w dół w rankingu. Z tego, co widziałem dotychczas w ramach elastycznego wyszukiwania, trudno jest zwrócić różne rankingi użytkownikom na podstawie danych dynamicznych tego użytkownika.

Rozwiązanie będzie musiało być skalowane do tysięcy użytkowników wykonujących kilkanaście wyszukiwań dziennie. Idealnie, chciałbym aby ranking zmieniał się w czasie rzeczywistym, ale nie jest krytyczny.

+1

jeśli to rozwiązałeś, możesz podzielić się informacjami? Próbuję zaimplementować bardzo podobną funkcjonalność, ale poniższa odpowiedź nie zawiera wystarczających informacji. – ivant

Odpowiedz

7

Elasticsearch oferuje szeroką gamę opcji punktacji, ale wtedy, aby osiągnąć to, co powiedziałeś, będziesz musiał wykonać dodatkowe zadania.

Function score query i dokument terms lookup terms filter byłoby nasze narzędzia naszego wyboru

najpierw utworzyć dokument na użytkownika, informując linki lub link identyfikator on odwiedzonych i łączy on chciał. To powinno być trzymane osobno jako oddzielny indeks. I to powinno być utrzymywane przez użytkownika, ponieważ powinien aktualizować i utrzymywać ten rekord od strony klienta.

Teraz, gdy użytkownik trafi na indeks danych, wykonaj kwerendę wyniku funkcji z funkcją filtru wskazującą na te pola.

W tym podejściu, ponieważ filtr jest zbuforowany, należy również uzyskać przyzwoitą wydajność.

+1

Vineeth, to jest bardzo podobne do tego, czego potrzebuję. Ale moja elastyczna wyszukiwarka-fu nie jest jeszcze tak dobra, więc czy możesz wysłać lub wskazać mi kilka przykładów? – ivant