Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Zapytanie sql zwraca błędne wyniki
--Piotrek--
post
Post #1





Goście







Witam,
Moje zapytanie wygląda tak:

  1. SELECT id,tytul,link FROM `tabela` WHERE match(tytul) against ("+'.$szukane.'*" IN BOOLEAN MODE) GROUP BY link order by match(tytul) against("+'.$szukane.'*") desc


Przy wyszukiwaniu załóżmy: 'andrzej nowakowski kiedy nadejdzie jutro', wyniki wyglądają mniej więcej tak:

1. andrzej nowakowski - andrzej nowakowski - nadzieja
2. andrzej nowakowski - zmierch
3. andrzej nowakowski
4. andrzej nowakowski - kiedy
5. andrzej nowakowski - kiedy nadejdzie jutro
6. andrzej nowakowski - zima

Pomijając fakt, że niektóre rekordy, jak widać mają błędne tytuły to jednak dlaczego to co jest idealnym dopasowaniem dla szukanej frazy, zamiast
na początku jest dopiero na 5 miejscu ?

Problem ten występuje tylko dla pewnych zapytań, ale jednak coś jest nie tak.
Jak to naprawić ?
Z góry dzięki za pomoc!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
pmir13
post
Post #2





Grupa: Zarejestrowani
Postów: 282
Pomógł: 89
Dołączył: 12.04.2011

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


  1. $query = "SELECT id,tytul,link FROM tabela WHERE match(tytul) against ('+$szukane*' IN BOOLEAN MODE) GROUP BY link order by match(tytul) against ('$szukane') desc";

W ten sposób masz poprawną kolejność, przy założeniu dokładnego przypasowania pierwszego słowa z frazy.
Jeśli jednak chcesz wyłącznie idealną zgodność
  1. $query = "SELECT id,tytul,link FROM tabela WHERE match(tytul) against ('\"$szukane\"' IN BOOLEAN MODE) GROUP BY link order by match(tytul) against ('$szukane') desc";

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: 12.10.2025 - 13:08