Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL] Przeszukiwanie danych po słowach kluczowych
Forum PHP.pl > Forum > Przedszkole
The Night Shadow
Załóżmy, że mamy tabelę z trzema kolumnami:

Hobby, Pasja, Praca

Powiedzmy, że w każdym z nich mamy jakieś tam teksty opisujące daną osobę.

Nie ma problemu, gdy przeszukując te dane szukamy dokładnie całej frazy lub któregokolwiek z wpisanych słów. W pierwszym przypadku sprawdzamy, czy w którejkolwiek kolumnie znajduje się szukana fraza, a w drugim dzielimy frazę na słowa po spacjach, a następnie tworzymy serię warunków OR dla każdego ze słów względem każdej kolumny.

Problem pojawia się, gdy chcemy dodać opcję szukania dokładnie wszystkich słów. Powiedzmy, że ktoś wpisał w wyszukiwarkę JAZDA ROWEREM. Zapytanie do bazy powinno uwzględniać tak te rekordy, w których słowa te wystąpiły w pierwszej kolumnie, w drugiej kolumnie, w trzeciej kolumnie, ale także rozdzielnie.

I tu nie wiem jak to zrobić. W jaki sposób zbudować zapytanie, które będzie wydajne i które szukając dwóch słów (lub więcej) zwróci rekordy, w których słowa te występują w dowolnej kolejności w wybranych kolumnach? Ręcznie można by tworzyć wszystkie możliwości, ale przy 5 słwoach o powiedzmy 5 kolumanch zapytanie będzie miało masakrycznie niską wydajność.
Fifi209
Może tak funkcja LIKE i tzw. wildcardy
The Night Shadow
No przecież o tym włąśnie mówię i jest to w zasadzie nie bardzo realizowalne. Zobacz.

Hobby, Pasja, Praca

Wpisałeś dwa słowa JAZDA ROWEREM i masz takie warunki

hobby like jazda AND pasja like rowerem
hobby like jazda AND praca like rowerem
pasja like jazda AND praca like rowerem
praca like jazda AND hobby like rowerem
praca like jazda AND pasja like rowerem
praca like jazda AND hobby like rowerem

itd. itd.

Weź sobie stworz ze 4 przeszukwiane pola w bazie i wpisz ze 3 słowa to masz takich warunków od zajechania i jeszcze trochę, a to daje rezultat w postaci niskiej wydajnoci.

To co do tej pory wymyślilem to zbeiranie wszystkich danych w jednej dodatkowej kolumnie gotowej do tego rodzaju wyszukiwania, ale jest to rozwiązanie obchodzące problem nie rozwiązujące go.

Pytanie pozostaje otwarte.
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.