Autor Zpráva
PetraPP
Profil
Potřebuji hledat pouze v jednom daném zboží, ale nic to nenajde. Přitom hledané slovo je přímo obsaženo v textu. WTF? :) Popis v mySQL mám bez diakritiky a samohlásek pro dosažení lepšího efektu hledání.

SELECT id FROM zbozi WHERE popis LIKE 'ryzovar%' AND id='8167'

popis zboží s id=8167 obsahuje text:
sencor srm 1500wh ryzovar specialn hrnec na varen ryz pracuj na princip varen v par objem 15 l pro priprav 1200 g ryzepln automatick provoz vhodn pro priprav vsech druh ryz vcetn ryz na sush automatick vypnut po dovaren a prepnut na funkc keep warm uchov ryz teplo az 6 hodin sklenen poklick s otvorem pro unik prebytecn par praktick rukojet po obo stranach snadn cisten vyjimateln vnitrn nadob s neprilnavym povrchem sveteln kontrolk provoz a udrzovan teplot protiskluzov nozk snadn skladovan odpojiteln sitov kabel dodavan prislusenstv specialn spachtl na ryz odmerk na ryz a vod
Alphard
Profil
Nechybí náhodou % ještě na začátku hledaného výrazu? Like bere ten řetězec jako celek, ne po slovech.
PetraPP
Profil
Já myslela, že znak % určuje umístění hledané slova v textu.

test% -> test, testovaný, testující
%test% -> netestovaný
Tori
Profil
PetraPP:
Jestli chcete rozlišovat slova, použijte fulltextové vyhledávání. (Šlo by to i s LIKE, ale bude to hrozně pomalé.)
PetraPP
Profil
Tak že na fulltextové vyhledávání musím mySQL upravit na:
FULLTEXT KEY `popis` (`popis`)

mySQL dotaz by pak tedy fungoval jako SLOVO% ?
SELECT id FROM zbozi WHERE popis LIKE 'ryzovar%' AND id='8167'
Tori
Profil
http://dev.mysql.com/doc/refman/5.6/en/fulltext-natural-language.html
PetraPP
Profil
Chápu, tak že jsem použila:
SELECT id FROM zbozi WHERE MATCH(popis) AGAINST('damsk trick')

Našlo mně to: trick s kratkym rukavem letn top do pas

Funguje to :)

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