![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 278 Pomógł: 36 Dołączył: 9.04.2003 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
Witam
Zaczalem pisac zaawansowana wyszukiwarke do sklepu internetowego, napotkalem jednak nastepujacy problem: co zrobic jezeli uzytkownik w wyszukiwanej frazie zrobi literowke?? tzn. mam sklep internetowy i wyszukiwarke typu "wpisz slowo", skrypt przeszukuje baze danych i wyswietla znalezione rzeczy i teraz wszystko jest super jezeli wpisze np. laptop to znajduje laptop xxx, laptop xyz, abc laptop itp. ale co zrobic jezeli ktos omylkowo wpisze "laotop" - literowka przy szybkim pisaniu o blisko p? wyskakuje ze nic nie znaleziono - problem jest niby nikly gdyz latwo to wypatrzyc, ale co jezeli np. ktos szuka po nazwie firmy, ktora to tylko slyszal a nie potrafi jej dokladnie przeliterowac? zamiast coca-cola wpisze koka-kola?? poszukuje jakiegos rozwiazania, ktore mnie naprowadzi na wlasciwe rozwiazanie tego problemu, czy ktos sie juz z czyms takim spotkal? jak to zostalo rozwiazane? Znalazlem tylko cos w stylu takim:
...ale to kompletnie nie to o co mi chodzi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 790 Pomógł: 7 Dołączył: 6.02.2003 Skąd: Polska Ostrzeżenie: (0%) ![]() ![]() |
Wydaje mi się, że lepiej i szybciej będzie to działać w PHP.
Słownik polskich wyrazów możesz pobrać tutaj: http://www.kurnik.pl/slownik/ Musisz go sobie tylko jakoś sparsować i zserializować tak, żeby wyszukiwanie było bardzo szybkie. Wydaje mi się, że w Twoim przypadku najlepiej pogrupować wyrazy po ilości liter, a następnie jak dostaniesz jakieś słowo, to dołączać taki plik, żeby ilość liter była taka sama. Później liczysz odległość Hamminga dla każdego ze słów i jeśli żadna nie równa się 0 (słowo nie istnieje w słowniku), to bierzesz słowo, które najbardziej pasuje i wyszukujesz w bazie po jednym i drugim. Jednak zastanawiam się teraz, czy nie powinieneś jakoś inaczej liczyć odległości między słowami dla słowa laptop np: laotop i labtop będą miały taką samą odległość, a "o" jest bliżej "p". Więc może by stworzyć tablicę z odległościami liter od siebie i np jeśli algorytm zwróci Ci na podstawie podanego laotop: [laptop, labtop] to sprawdzasz, która litera jest bliżej "o" na klawiaturze i wybierasz lepsze słowo do wyszukiwania, czyli laptop. Mam nadzieję, że wystarczająco jasno to opisałem. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 4.10.2025 - 14:01 |