Autor | Zpráva | ||
---|---|---|---|
Jack06 Profil |
#1 · Zasláno: 15. 4. 2012, 10:21:37
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 |
#2 · Zasláno: 16. 4. 2012, 16:45:45
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 |
#3 · Zasláno: 16. 4. 2012, 17:03:34
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 |
#4 · Zasláno: 16. 4. 2012, 17:06:21
Fulltextové vyhledávání se nehodí?
|
||
Martin02 Profil |
#5 · Zasláno: 16. 4. 2012, 17:14:41
Jack06:
Ano, to s tebou souhlasím, že by to server nemusel utáhnout. Jiné řešení bohužel neznám. |
||
Jack06 Profil |
#6 · Zasláno: 16. 4. 2012, 18:53:58
jenikkozak:
no jde mi o to, jak to přesně použít něco takovéhoto na ty 3 typy hledání |
||
Časová prodleva: 5 dní
|
|||
Jack06 Profil |
#7 · Zasláno: 21. 4. 2012, 19:25:42
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 |
#8 · Zasláno: 23. 4. 2012, 10:33:42
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 |
#9 · Zasláno: 25. 4. 2012, 16:51:07
Kajman:
jakože obyčejně LIKE s AND nebo OR?? |
||
Kajman Profil |
#10 · Zasláno: 25. 4. 2012, 20:19:40
Like je pomalé, je lepší ten odkázaný fulltext. And a or můžete použít i tam.
|
||
Časová prodleva: 13 let
|
0