Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: ElasticSearch - podpowiadanie wpisywanej frazy
Forum PHP.pl > Forum > Bazy danych
adrianpl20
Witam, zacząłem robić wyszukiwarkę przy pomocy ElasticSearch, próbowałem według kilku poradników i sprawdzając dokumentację, ale nie mogę dojść do oczekiwanego rezultatu. Obecnie pobieram wyniki funkcją match(), mam zrobiony custom tokenizer (typ nGram) oraz custom analyzer (w nim ten tokenizer customowy z nGram i filtry lowercase oraz asciifolding), analyzer podpięty do pola title z tytułem ogłoszenia, i nawet fajnie wyszukuje wyniki (fuzziness też tam wcisnąłem w razie braku wyników), ale chciałbym jeszcze aby wyświetlało tylko 2-3 frazy w wynikach wyszukiwania a nie całe tytuły ogłoszeń (tak, to wyszukiwarka ogłoszeń). Ma to działać tak samo jak na OLX / allegro / sprzedajemy, czyli wpisujesz np. "felgi" i podpowiada "felgi aluminiowe", "felgi metalowe", "felgi 18", ale bez całych opisów ogłoszeń właśnie biggrin.gif tylko nie mam pojęcia jakim algorytmem jest to zrobione i właściwie w jaki sposób taki efekt osiągneli. Może ktoś bawił się czymś takim i wie jak taki efekt uzyskać?
Pyton_000
Ja bym to zrobił na zasadzie:
- wyszukujesz "felgi"
- baza zostaje odpytana i zwraca jakieś tam wyniki.
- Bierzesz te wyniki i wycinasz kawałem
- potem robisz sobie zestawienie które zwroty są najczęściej używane i wypluwasz tylko kilka z nich + oryginalną frazę
- przy zatwierdzeniu frazy zapisujesz sobię do bazy do jakiejś osobnej tabeli/dokumentu tą frazę i dalej możesz już bazować dodatkowo na częstotliwości wyszukiwania jako kolejny element (waga)

To taka luźna dywagacja.
adrianpl20
Dziękuję za tą "luźną dywagację", rzuciłeś mi inne spojrzenie na ten problem biggrin.gif
Lekko zmodyfikowałem Twój pomysł wink.gif
Zamiast męczyć te wyniki, może po prostu by obrabiać w backendzie zatwierdzoną frazę (usuwać zbędne słowa i znaki, a także wyciąć np. tylko pierwsze 3 wyrazy), zapisać to do ElasticSearch i z tego wyswietlać wyniki do podpowiadania frazy?
Dodatkowo, żeby nie było pusto na początku z tymi wynikami, to przenosząc ogłoszenia do ElasticSearch, obrabiać w ten sam sposób tytuł ogłoszenia (jak wyżej) i dodawać te wyciągnięte pierwsze 3 wyrazy jako jedną frazę do tabeli z proponowanymi frazami?
Jakieś negatywy takiego rozwiązania?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.