Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Błąd zapytania?
Forum PHP.pl > Forum > Przedszkole
djgarsi
Witam. Mam pewien problem z zapytaniem w wyszukiwaniu rekordów.
Mój kod:
  1. $search = htmlspecialchars($_POST['szukaj']);
  2. $zapytanie = "SELECT name FROM file WHERE MATCH(name) AGAINST('$search')";
  3. $final = mysql_query($zapytanie) or Die ("Nie działa zapytanie.");

No i właśnie jest ten ostatni komunikat.

Kod wziąłem ze strony http://ownpage.pl/php/wyszukiwarka-pelnote...-uzyciem-union/
wookieb
w DIE dodaj wywołanie mysql_error
nospor
zamiast: Die ("Nie działa zapytanie.");
wyswietl sobie blad zapytania. masz to opisane tu
Temat: Jak poprawnie zada pytanie
djgarsi
No dobrze. Dodałem mysql_error i mam błąd treści: Can't find FULLTEXT index matching the column list
wookieb
No.. nie masz klucza pełnotekstowego na tym polu.
Przeczytaj dokładnie manuala dotyczącego FULLTEXT-a ponieważ używanie takiego indeksu wymaga umiejętności i wiedzy.
djgarsi
No dobrze. A czy jest jakiś inny sposób na szukanie w bazie danych na zasadzie:
- wpisuję frazę,
- nie znajduje całości frazy,
- wyświetla podobne rekordy.
wookieb
Fulltextem to zrobisz
Ale polecam inne silniki wyszukiwania typu Sphinx, Solr (Lucene). Niestety nie ma ich w standardowych hostingach.
djgarsi
A jest możliwość "rozbicia" frazy na słowa i szukania wg nich?
wookieb
W czym?
djgarsi
A np poleceniem explode.
wookieb
No tak ale w czym? W zwykłej tabeli mysql za pomoca LIKE czy za pomoca FULLTEXT?
djgarsi
Tak, w zwykłej tabeli z LIKE. Każde słowo byłoby w LIKE.
wookieb
Można. Tylko wiadomo... Fulltext jest bardziej zaawansowany i skuteczniejszy
djgarsi
Dobrze, teraz w praktyce.
Rozbiję frazę na słowa. Policzę wyrazy. Pętla for o długości liczby wyrazów.
I tu napotykam problem. Powtarzana będzie formuła OR 'słowo[i+1]'
Jak tą pętlę zgrać z zapytaniem?
goran
  1. $e = explode(' ', $_POST['fraza']);
  2. if(is_array($e)) foreach($e as $value) $aE[] = 'name LIKE "%'.$value.'%"';
  3. if($aE) $query = 'SELECT * FROM file WHERE '.implode(' OR ', $aE);


Ale to marne rozwiązanie. LIKE jest powolne, a same wyniki nie będą zbyt dokładne. Załóż na pola po których wyszukujesz kluch fulltext'u.

Pozdr.
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.