Autor Zpráva
SwimX
Profil
Dobrý den,

mám vyhledávací formulář
mysql_query("SELECT parent,description FROM pages WHERE (content LIKE '%".$slovo."%' or keywords LIKE '%".$slovo."%' or description LIKE '%".$slovo."%') and (published = 1 and lang = '".$GLOBALS['$lang']."')")

a potřeboval bych nějak upřednostnit ty výsledky, kde je výskyt hledaného slova častější.
Kajman_
Profil *
Tak použijte fulltextové vyhledávání, jsou-li tabulky typu myisam.

http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html
SwimX
Profil
Kajman_
vypadá to velmi lákavě, ale nák se mi nedaří to rozchodit.

mysql_query("SELECT *, MATCH(content,description,keywords) AGAINST('$_POST[slovo]' IN BOOLEAN MODE) AS score FROM pages") ;


mám v tabulce 3 testovací záznamy, jeden má v 20sobe asi slov "jahoda", druhý má jednou slovo "jahoda" třetí má slovo "jablek"

když pošlu slovo jahoda -> vypíše se skóre u prvních dvou 1 a u třetího 0. Proč nemá první záznam skore 20, přišlo by mi to logičtější?
bohyn
Profil
SwimX
Proč nemá první záznam skore 20, přišlo by mi to logičtější
Protoze pouzivas IN BOOLEAN MODE
SwimX
Profil
bohyn
ovšem když ho tam nedám, a před tímto dotazem pustím ještě tento:
mysql_query("ALTER TABLE pages ADD FULLTEXT vyhledavani(content,description,keywords)");


tak to ale nic nevypíše :) asi jsem něco nepochopil...
bohyn
Profil
SwimX
- Je mozne ze jahoda je prilis konkurencni klicove slovo. Slovo ktere se nachazi v cca 50% radku je z indexu vyrazeno. Stejne tak prilis kratka slova (defaultne 3 a mene znaku).
- presny pocet vyskytu nedostanes, score je jakesi ohodnoceni daneho zaznamu, ale pro potreby trideni by melo stacit
SwimX
Profil
bohyn
je prilis konkurencni klicove slovo
to je dost možné. ne z 50% ale cca z 85% tam je jahoda :))
tak já zkusim pořádnej text.
Kajman_
Profil *
Nemá být add fulltext index vyhledavani? A píše něco mysql_error? A je lepší testovat nad smysluplnými daty, takhle bude jahoda asi opravdu stopword.
bohyn
Profil
Kajman_
Nemá být add fulltext index vyhledavani?
Ne. Tipuju ze je to prilisnou konkurenci toho slova
SwimX
Profil
zkuste kouknout sem: http://plavec.borec.cz/upfiles/find.php
bohyn
Profil
SwimX
SELECT *, MATCH(content) AGAINST('') AS score FROM pages

mas tam prazdny retezec
SwimX
Profil
bohyn
j, nahoře je formulář, musíš si napsat hledané slovo

edit: jahoda je tam ve druhém záznamu asi 3x
Kajman_
Profil *
Jenže je ve dvou třetinách všech řádků, takže se z indexu vyhodí jako stopword! A index nemusíte vytvářet pokaždé, stačí jednou.
SwimX
Profil
Kajman_
ano, pokaždé tam je pouze pro vás, abyste viděli, že jsem ho vytvořil :)
Takže myslíte, že to takle bude fungovat? Zkusím to zítra nasadit na web, bohužel se z domova nedostanu na servr firmy, tak abych tam mohl přepisovat skripty.

Pro dnešek tedy mnohokrát děkuji
bohyn
Profil
SwimX
ano, pokaždé tam je pouze pro vás, abyste viděli, že jsem ho vytvořil :)
Bez nej MySQL pri fulltext hledani vyhodi chybu

Takže myslíte, že to takle bude fungovat?
Kdyz das hledat treba "book" tak to funguje. Pro lepsi overeni funkcnosti je treba vice zaznamu.
SwimX
Profil
bohyn
Kajman_
úžasné, funguje to. Mnohorát Vám děkuji
Toto téma je uzamčeno. Odpověď nelze zaslat.

0