Autor Zpráva
Jack06
Profil
Zdravím, chtěl bych se zeptat, jak z databáze vytáhnout tyto tři typy výsledků.

V databázi budu mít třeba ve sloupci [text] toto:
řádek1: Dnes jsem si k obědu udělal svíčkovou s knedlíky.
řádek2: Dnešní svíčkovou, co mi udělala babička s knedlíky k obědu, jsem si vzal i domů.

A potřebuji když budu mít: svíčkovou s knedlíky
a) všechny slova: vybere oba řádky
b) některé ze slov: vybere oba řádky (stačí, že vyhovuje už svíčkovou)
c) přesnou frázi: opět vybere pouze první řádek

Tuším, že to budu muset asi rozdělit dle slov, ale nevím jak už pak napsat jednotlivé dotazy, když ty slova budu mít v poli. Předem děkuji.
Martin02
Profil
Jack06:
Vytáhneš si z MySQL tu buňku s větou do proměnné. Pomocí php metody split() si rozdělíš text s oddělovačem mezera. Budeš mít tedy pole a v každém indexu jedno slovo. A pak už stačí pomocí for, který se bude vykonávat dlouho podle počtu slov v poli, projít to pole, jestli se někde vyskytuje daný řetězec (svíčkovou s knedlíky).
Nevím, jak jsi zkušený a jestli to pochopíš, kdyžtak sem napiš.
Jack06
Profil
Tak toto jsem si přesně myslel, že to takto dělat je nesmysl.

Když si vezmu, že budu mít 10 000 řádků a v každém řádku bude 100 slov a budu vyhledávat sousloví o 10 slovech, tak se musím totálně zasmyčkovat. Podle mě by na tom takto umřel server.
jenikkozak
Profil
Fulltextové vyhledávání se nehodí?
Martin02
Profil
Jack06:
Ano, to s tebou souhlasím, že by to server nemusel utáhnout. Jiné řešení bohužel neznám.
Jack06
Profil
jenikkozak:
no jde mi o to, jak to přesně použít něco takovéhoto na ty 3 typy hledání
Jack06
Profil
again: takto: když budu chtít přesnou frázi, tak frázi dám jako LIKE %fraze%, jenže nevím jak tamto použít na obsahuje alespoň některé ze slov a na obsahuje všechny. Nevím jak to SQL donutit, aby to muselo obsahovat všechny nebo alespoň jedno z.
Kajman
Profil
Jack06:
Použijete podmínky na jednotlivá slova a mezi ně dáte AND (všechna slova) případně OR (jedno ze slov).
Jack06
Profil
Kajman:
jakože obyčejně LIKE s AND nebo OR??
Kajman
Profil
Like je pomalé, je lepší ten odkázaný fulltext. And a or můžete použít i tam.

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: