Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> ElasticSearch - podpowiadanie wpisywanej frazy
adrianpl20
post 21.09.2018, 06:30:14
Post #1





Grupa: Zarejestrowani
Postów: 111
Pomógł: 16
Dołączył: 20.02.2014

Ostrzeżenie: (10%)
X----


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ć?

Ten post edytował adrianpl20 21.09.2018, 06:31:26
Go to the top of the page
+Quote Post
Pyton_000
post 21.09.2018, 08:20:59
Post #2





Grupa: Zarejestrowani
Postów: 7 816
Pomógł: 1374
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
adrianpl20
post 21.09.2018, 19:21:38
Post #3





Grupa: Zarejestrowani
Postów: 111
Pomógł: 16
Dołączył: 20.02.2014

Ostrzeżenie: (10%)
X----


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?

Ten post edytował adrianpl20 21.09.2018, 19:31:39
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.10.2019 - 00:26