Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MATH AGAINST
Forum PHP.pl > Forum > Bazy danych > MySQL
szypi1989
Witam.mam rekordy np.o wartościach CHAR 'mandaryna','mandrive','luka','akrmanstick','samochód'.
I chce uzyskać wszystkie rekordy które w kalumnie przedmioty mają w środku wyrazu 'man' .jak to zrobić?
próbuje zrobić tak:
  1. SELECT przedmioty
  2. FROM tabela
  3. WHERE
  4. MATCH (przedmioty) AGAINST ('man' IN NATURAL LANGUAGE MODE);

i nie chodzi.Próbuje zrobić tak:
  1. SELECT przedmioty
  2. FROM tabela
  3. WHERE
  4. MATCH (przedmioty) AGAINST ('%man%' IN NATURAL LANGUAGE MODE);

też nie chodzi .próbuje zrobić tak:
  1. SELECT przedmioty
  2. FROM tabela
  3. WHERE
  4. MATCH (przedmioty) AGAINST ('*man*' IN NATURAL LANGUAGE MODE);


też nie chodzi,próbuje nawet zmienić ten IN NATURAL...,ale także nic z tego.jak to w takim razie zrobić??proszę o pomoc
alegorn
jaki masz kod bledu?
szypi1989
niema kodu błędu.chce tylko uzyskać napisany efekt ,czyli
mam rekordy np.o wartościach CHAR 'mandaryna','mandrive','luka','akrmanstick','samochód'.
I chce uzyskać wszystkie rekordy które w kalumnie przedmioty mają w środku wyrazu 'man' .
alegorn
..? nie ma kodu bledu i nie ma wynikow?
w czym sprawdzasz sql... ? z poziomu php ?

podaj chociaz strukture tabeli - to bedzie mozna cos wiecej powiedziec.....
zalozyles index fulltext ?


samo wyrazenie 'nie chodzi' to zamalo. tu sa programisci, wrozki to pod innym adresem...wink.gif

j.



PS zawsze zadziala rlike, i ostatecznie like
szypi1989
rozumiem że tu są programiści.ale właśnie podałem 3 przykłady ,napisałem przykłady.A pytanie jest dosyć logiczne .Są wyniki ale tylko jeden i tu jest problem.Oto przykładowa struktura tabeli:


ID | name
--------------------
1 | mandaryna
2 | mandrive
3 | luka
4 | akrmandstick
5 | samochód

Oto czego ja chce.Chce wyciągnąć wszystkie rekordy które mają w środku wyrazu 'and'.czyli chcę aby po zapytanie komputer wyświetlił mi takie rekordy:

ID | name
--------------------
1 | mandaryna
2 | mandrive
4 | akrmandstick

mandaryna ma w środku twierdzenie 'and' . m and aryna.Chcę aby to było za pomocą MATH AGAINST.Za pomocą like robi się to tak :
SELECT `id`, `name` FROM `przedmioty` WHERE `name` LIKE "%and%"
a ja chcę to za pomocą MATCH AGAINST.
gdy robię takie zapytanie:
SELECT id,name FROM przedmioty WHERE MATCH(name) AGAINST ('and')
wyświetla mi pusty wynik.
alegorn
bardziej od kolumn interesowal mnie jaki masz silnik, jak masz pozakladane indexy... to byl sens mojego wczesniejszego pytania...
przy MATH AGAINST musisz miec zalozony index fulltext na pola ktore chcesz przeszukiwac...
a ja nie wiem jak masz to zrobione...

j.
szypi1989
tabela MYISAM, typ kolumny name FULLTEXT
alegorn
spróbuj uzyc

IN BOOLEAN MODE

ale o ile pamietam, ten index skuteczny jest od 4 znakow? choc z drugiej strony '*' (i tylko * ) powinna ten problem rozwiazac.
szypi1989
w IN BOOLEAN MODE nie działa,gwiazdka nie działa:( jedynie gwiazdka działa na końcu zdania.jak np.szukam wyrazu "mandaryna" i użyje gwiazdki "mandar*" to mi wyszuka ten wyraz ,ale gdy użyje tak "*andaryn*",to nie działa:(
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.