Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Przebudowanie zapytania z LIKE na rzecz funkcji MATCH oraz AGAINST
majestiq
post
Post #1





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 26.10.2006

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


Dostalem z home.pl info o tym, że używam nieefektywnego zapytania z LIKE i info o konieczności zamiany jak w temacie.
Coś mi nie idzie jednak ta zamiana,

Pierwotny kod wygląda w ten sposób:

  1. $sql = 'SELECT id,tytul,rozmiar,licznik,dlugosc FROM `'.$tabelka.'` WHERE `tytul` LIKE \'%'.$nazwa'%\' ORDER by tytul LIMIT 1000 ';
  2. $result = mysql_query($sql);


Da się to w ogóle tak zamienić, żęby nie używać LIKE jednak wyszukiwanie działało identycznie, tzn bez względu,
którą część frazy się w pisze i czy ma ona tylko 2znaki czy więcej ?

// Sami założyli mi indexy na bazie, któe podobno są konieczne w tym wypadku:

mysql> create fulltext index idx_tytul on artykuly(tytul);

Ten post edytował majestiq 17.08.2009, 07:43:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
majestiq
post
Post #2





Grupa: Zarejestrowani
Postów: 235
Pomógł: 0
Dołączył: 26.10.2006

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


Wygląda, że jest już blisko - nie sypie błędami ale jako wynik wyświetla mi dalszą część skryptu,
która pojawia się w wypadku braku conajmniej jednego wyniku.

Może coś zjadłem ?

Podam jeszcze raz starą (poprawną wersję) z LIKE i nową nie do końca działającą:

  1.  
  2. //$sql = 'SELECT id,tytul,rozmiar,licznik,dlugosc FROM `'.$tabelka.'` WHERE `tytul` LIKE \'%'.$nazwa.'%\' ORDER by tytul LIMIT 1000 ';
  3.  
  4. $sql ='SELECT * FROM `'.$tabelka.'` WHERE match(tytul) against ($nazwa IN NATURAL LANGUAGE MODE)';
  5.  



O czym zapomniałem ?
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 13.10.2025 - 20:32