Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukiwanie z polskimi i bez polskich znaków
Forum PHP.pl > Forum > Bazy danych > MySQL
mhs
Witam serdecznie,

Ma ktoś z Was elegancki sposób na zorganizowanie wyszukiwarki, tak by zarówno po wpisaniu słowa np. "Kraków" - "Krakow" lub np. "Gdańsk" - "Gdansk" system wyszukał lokalizację nie uwzględniając polskich znaków? Generalnie sprowadza się, to do tego, by w bazie danych przechowywać orginalne nazwy miejscowości (z polskimi znakami), a niezależnie od tego co wpisze użytkownik (z polskimi czy też bez polskich znaków) zwrócone zostały prawidłowe wyniki.

Pomijam pomysł, by zdublowania pola w tabeli i przy w prowadzaniu danych oczyszczania tekstu z polskich znaków i w konsekwencji wyszukiwanie po dwóch polach.

Drugi jaki przychodzi mi pomysł to zbudowanie perpektywy, w której to dokonam zamiany wszystkich polskich znaków na odpowiedniki, a następnie dokonam z perpektywy pociągnie to co potrzebuję wyszukać. Problem jest tylko taki, że nie wiem jak do końca to zrobić gdyż nie wiem jak przekazać tablicę do zamiany (najlepiej byłoby tak zrobić). Z wykorzystaniem tego:
  1. SELECT REPLACE(p_miejscowosc, 'ł', 'l')
  2. FROM punkty
  3. p;
to raczej się chyba nie da (tzn. żeby tutaj wrzucić tablicę znaków do zamiany). Może jakieś wyrażenie regularne (chociaż nic nie widziałem w manualu na ten temat).

W przeszukiwanej tabeli będzie okolo 10 tys. pozycji więc przerzucenie to na php nie jest dobrym pomysłem.


MySQL - posiada jakieś wsparcie w tym zakresie?

Z góry dziękuję za pomysły.
Pozdrawiam.


PS. Proszę o przeniesie tematu na forum MySQL.
mówisz - masz smile.gif /nospor/
Odpowiedz mi jeszcze tylko na pytanie i będzie super smile.gif
Adiasz
a widziales to: regular expressions ?
Ja bym przed rozpoczeciem wyszukiwania pozamienial wszystkie polskie znaczki na wyrazenia typu np: ń|n i wszyszukal REGEXPem po ciagu np. '^gda(ń|n)sk$' , wydaje mi sie ze z 10tys pozycji powinno smigac szybciutko
Vogel
1) wyrazenia regularne winksmiley.jpg
2) całkowite wykopanie znaczkow PL z zapytania
3) indeks miast

odnosnie 3)

Kod
id | nazwa
1 | gdańsk
2 | poznań
1 | gdansk
3 | krakow
3 | kraków
2 | poznan
4 | białystok
...


zasada chyba jasna ;]
mhs
@Adiasz Dzięki za odpowiedź. Faktycznie Twój pomysł jest dobry i działa bardzo dobrze. Ja trochę podchodziłem inaczej do tego problemu i inaczej myślałem by to zrobić. Dzięki.
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.