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 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ć?
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.
Dziękuję za tą "luźną dywagację", rzuciłeś mi inne spojrzenie na ten problem
Lekko zmodyfikowałem Twój pomysł
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?
Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)