Autor | Zpráva | ||
---|---|---|---|
JeremyCB Profil |
#1 · Zasláno: 11. 2. 2006, 17:47:48 · Upravil/a: JeremyCB
mam nekolik tabulek kde bych potreboval vyhledat klicova slova kazda s techto tabulek ma:
nazev , nazev2, popis a vlastnosti (delsi texty) snazil jsem se udelat nejaky skriptik alespon na jednu tabulku: <? $search = $_POST['search']; if($search != "" && $search != " ") { $result = mysql_query("SELECT nazev, nazev2, popis FROM kury WHERE (nazev LIKE '%$search%') OR (nazev2 LIKE '%$search%') OR (popis LIKE '%$search%')"); $delka = mysql_numrows($result); if($delka > 0) { echo "<div class=\"normal\">Hledám slovo \"$search\"</div><br>"; echo "<div class=\"normal\">Počet nalezených záznamů: $delka</div><br><br>"; for($i=0; $i<$delka; $i++) { $nazev = mysql_result($result, $i, "nazev"); $nezev2 = mysql_result($result, $i, "nazev2"); $popis = mysql_result($result, $i, "popis"); echo "<div><a href=\"\">$nazev</a></div>"; echo "<div><a href=\"\">$nazev2</a></div>"; echo "<div><a href=\"\">$popis</a></div>"; } } } else { echo"nebylo zadane zadne slovo"; } ?> a kdyz vypisuji ten popis tak mi to vyhodi celej ten clanek a ne jen odkaz na ten clanek kde cse to slovo nachazi mohl by jste mi nekdo poraditi jak to udelat tak jak bych potreboval dekuji |
||
Kajman_ Profil * |
#2 · Zasláno: 11. 2. 2006, 22:11:42
No, vypisuješ popis, tak tam máš celý popis. Jestli tam má byt jen odkaz, tak prostě popis nevypisuj.
V MySQL lze použít fulltextový index, který dává rychlejší výsledky než like. http://dev.mysql.com/doc/refman/4.1/en/fulltext-search.html |
||
JeremyCB Profil |
#3 · Zasláno: 12. 2. 2006, 10:45:09
To uz jsem take zkousel ale je tam zase problem s cestinou. Rychlejsi to sice je ale zase je tam problem s indexy
|
||
Kajman_ Profil * |
#4 · Zasláno: 12. 2. 2006, 12:42:50
Já to používám na jednom webu na mysql 4.1 a problémy s češtinou neshledávám. Problém s indexy také nemám. Jen tam nejsou zahrnutá krátká slova.
Ještě jsem si upravil řazení, že se zohledňuje třeba i stáří článku a počet přečtení. |
||
JeremyCB Profil |
#5 · Zasláno: 12. 2. 2006, 15:19:08
Ok dik
|
||
JeremyCB Profil |
#6 · Zasláno: 12. 2. 2006, 23:23:44
Vzhledem k tomu, ze se zrejme bude jednat o malou databazi (do 100 000 zaznamu), tak bych to vubec neresil...
Pokud by to bylo rozsahlejsi, tak urcite pouzijte ty fulltextove funkce. Ten LIKE je spis na nejake substringy, protoze umoznuje vyhledavat i podle ruznych fragmentu vyrazu. Takze pokud chcete vyhledavat v nejakych rozsahlejsich textech, tak ten fulltext,pokud treba jen v nazvech, tak LIKE. pokud by nekdo mohl poskytnout nejake informace jak by se dal tento problem vyresit byl bych rad koukal jsem ze mraky lidi shledlo toto tema a myslim si ze zrova toto tema neni nikde dostatecne popsane a vysvetlene tak budte prosim ochotni a prispejte nejakymi linky, prispevky, priklady dekuji vsem |
||
Anonymní Profil * |
#7 · Zasláno: 13. 2. 2006, 09:20:47
Fulltext funguje celkem i s češtinou, vyhledávám v BOOLEAN MODE, lze využívat AND, OR, hledat přesně a (*).
Jen je potřeba mít nastavené porovnávání na latin2_general_ci (ne latin2_czech_cs) pokud chcete aby našel čaj == ČaJ |
||
Kajman_ Profil * |
#8 · Zasláno: 13. 2. 2006, 09:32:37
koukal jsem ze mraky lidi shledlo toto tema
Ani né tak mraky lidí... spíš nějaké ťululum poslalo na tuhle adresu kontrolovaciho robota. prispejte nejakymi linky http://www.linuxsoft.cz/article.php?id_article=952 http://www.linuxsoft.cz/article.php?id_article=960 http://www.root.cz/clanky/princip-jednoducheho-fulltextu-1/ |
||
Anonymní Profil * |
#9 · Zasláno: 13. 2. 2006, 09:40:25
|
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0