Autor | Zpráva | ||
---|---|---|---|
ph@tE Profil * |
#1 · Zasláno: 24. 8. 2006, 09:02:01
Mám vyhledávač a potřeboval bych do něj dát funkci, která vyhledává pouze slovo, která souhlasí v celém slově, tzn. aby to např. slovo domov nevyhledalo na slovo dom, ale pouze na domov. Nevim jak na to, asi nějakým regulárním výrazem.
Zatím to mám takto: $vysledek = mysql_query("SELECT * FROM clanky WHERE (Nazev like '%$slovo%') OR (Popis like '%$slovo%') $orderby LIMIT $od,$do"); Co s tím? |
||
Anonymní Profil * |
#2 · Zasláno: 24. 8. 2006, 09:40:23
nemas kopirovat scripty tak ako pride ale zistit co robia.
vies co ti robi '%$slovo%' ? |
||
ph@tE Profil * |
#3 · Zasláno: 24. 8. 2006, 09:47:11
Jo vim, vyhledá to proměnnou slovo z tabulky clanky ze sloupců Nazev a Popis, kterou uživatel zadá do pole na text a před touto proměnnou může být cokoliv a za ní taky. Tzn. že když uživatel zadá blo, tak mu to najde i stránky, kde je slovo blog. Já bych právě potřeboval, aby to vyhledávalo pouze slovo blo, a ne blog, prostě aby se to shodovalo v celém slově a nevim jak na to...
|
||
sonik Profil |
#4 · Zasláno: 24. 8. 2006, 10:53:03 · Upravil/a: sonik
odpověděl si sám: před touto proměnnou může být cokoliv a za ní taky
takže dej pryč % |
||
Anonymní Profil * |
#5 · Zasláno: 24. 8. 2006, 13:15:44
No jo, ale pak to bude vyhledávat tak, že polkud bude třeba popis = slovo, tak ho to vyhledá a ne pokud mám třeba popis: "Toto je můj blog", tak ho to nevyhledá, sice tam slovo blog obsaženo je, ale nerovná se popisu, nebo to je jinak?? Zkusim to, ale myslim že to nepude...
|
||
Kajman_ Profil * |
#6 · Zasláno: 24. 8. 2006, 13:34:37
A co zkusit fulltext v mysql?
|
||
Anonymní Profil * |
#7 · Zasláno: 24. 8. 2006, 13:36:31
Jak jako fulltext?? To neznám.
|
||
Kajman_ Profil * |
#8 · Zasláno: 24. 8. 2006, 13:51:07
|
||
Joker Profil |
#9 · Zasláno: 24. 8. 2006, 14:03:00
S jistým omezením by fungovalo:
WHERE Nazev LIKE ' %slovo% '. Pak to nenajde věci, kde je hledaný výraz jen částí slova. Problém je, že to nenajde ani třeba: "slovo." "slovo:" "slovo!" "slovo?" a podobně, což je asi chyba. |
||
sonik Profil |
#10 · Zasláno: 24. 8. 2006, 16:23:03 · Upravil/a: sonik
FULLTEXT cca nějak takto jsem to...
$searchtext="\"".$_POST["searchtext"]."\""; \\aby to hledalo přesně co chceš nad čím chceš hledat: $indexes='nadpis,autor,text'; musíš vytvořit fulltextový index: mysql_query("ALTER TABLE ".$databases." ADD FULLTEXT search (".$indexes.")"); pak se zeptáš: $query="SELECT *,MATCH(".$indexes.") AGAINST('".$searchtext."' IN BOOLEAN MODE) as score FROM ".$databases." WHERE MATCH(".$indexes.") AGAINST('".$searchtext."' IN BOOLEAN MODE) and zobrazit='y' "; setřídíš podle kvality (~množství nalezených shod): $query.=" ORDER BY score DESC"; bacha na češtinu a hledat se dá myslím slova větší než 3 znaky $vysledek=mysql_query($query); .... nakonci zrušit index: mysql_query("ALTER TABLE ".$databases." DROP INDEX search") |
||
sonik Profil |
#11 · Zasláno: 24. 8. 2006, 16:35:03
pokud chceš hledat výskyt ahoj a zároveň čau, musí se přidat operátor + před každé slovo
|
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0