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%)
-----


W order by wykorzystujesz match, który nie jest w boolean mode, jak najbardziej słusznie, ale ze składnią skopiowaną z boolean mode, co powoduje traktowanie dodatkowych znaków jako zawartości do wyszukania, dzięki temu nie jest to już idealne dopasowanie. Usunięcie ich rozwiąże problem kolejności. Natomiast dodatkowe błędne wyniki spowodowane są tym, że "+'.$szukane.'*" oznacza w tym przypadku "+'.andrzej nowakowski kiedy nadejdzie jutro.'*". Powinno być "+".$szukane."*".

Ten post edytował pmir13 17.04.2011, 18:48:56
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: 26.12.2025 - 18:12