Autor Zpráva
Monkeys
Profil *
Potrebujem poradit s vyhladavanim
mam nastavene FULLTEXTY nad 3 stlpcami v tabulke vyhladavam pomocou prikazov MATCH a AGAINST

moj dotaz:
SELECT id_produktu, uni_kod, produkt, url_produktu, popis, 
            MATCH(produkt, popis, uni_kod) AGAINST('{$search}') AS mtch
            FROM produkty
            WHERE priznaky='open'
            HAVING mtch > 0.001
            ORDER BY datum DESC

prikaz funguje v poriadku no problem je ze AGAINST ignoruje slova ktore maju 3 alebo menej znakov, co je v tomto pripade dolezite pretoze stlpec uni_kod obsahuje prave kody ktore maju 2,3 a viac pismen.
Da sa to nekym sposobom riesit ?

dakujem
M.


Tak som to vyriesil takto:

"SELECT id_produktu, uni_kod, produkt, url_produktu, popis 
            ".(( strlen($search) > 3) ? " , MATCH(produkt, popis, uni_kod) AGAINST('{$search}') AS mtch" : "")."
            FROM produkty
            WHERE priznaky='open'
            ".(( strlen($search) > 3) ? "HAVING mtch > 0.001" : "AND produkt LIKE '%{$search}%' OR popis LIKE '%{$search}%' OR uni_kod LIKE '%{$search}%'"  )."
            ORDER BY datum DESC "

Ak existuje lepsie riesenie napiste

vdaka
M.
Keeehi
Profil
Monkeys:
Ano, defaltně slova kratší než 4 znaky se neberou v potaz při vytváření indexu. Dá se to však přenastavit. dev.mysql.com/doc/refman/5.0/en/fulltext-fine-tuning.html

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0