Autor | Zpráva | ||
---|---|---|---|
SwimX Profil |
#1 · Zasláno: 5. 5. 2009, 15:04:43
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 * |
#2 · Zasláno: 5. 5. 2009, 15:51:11
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 |
#3 · Zasláno: 5. 5. 2009, 21:15:49 · Upravil/a: SwimX
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 |
#4 · Zasláno: 5. 5. 2009, 21:21:01
SwimX
„Proč nemá první záznam skore 20, přišlo by mi to logičtější“ Protoze pouzivas IN BOOLEAN MODE |
||
SwimX Profil |
#5 · Zasláno: 5. 5. 2009, 21:25:03
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 |
#6 · Zasláno: 5. 5. 2009, 21:41:15
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 |
#7 · Zasláno: 5. 5. 2009, 21:44:58
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 * |
#8 · Zasláno: 5. 5. 2009, 21:47:51
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 |
#9 · Zasláno: 5. 5. 2009, 21:54:01
Kajman_
„Nemá být add fulltext index vyhledavani?“ Ne. Tipuju ze je to prilisnou konkurenci toho slova |
||
SwimX Profil |
#10 · Zasláno: 5. 5. 2009, 22:01:24
zkuste kouknout sem: http://plavec.borec.cz/upfiles/find.php
|
||
bohyn Profil |
#11 · Zasláno: 5. 5. 2009, 22:08:36
SwimX
SELECT *, MATCH(content) AGAINST('') AS score FROM pages mas tam prazdny retezec |
||
SwimX Profil |
#12 · Zasláno: 5. 5. 2009, 22:12:06 · Upravil/a: SwimX
bohyn
j, nahoře je formulář, musíš si napsat hledané slovo edit: jahoda je tam ve druhém záznamu asi 3x |
||
Kajman_ Profil * |
#13 · Zasláno: 5. 5. 2009, 22:30:01
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 |
#14 · Zasláno: 5. 5. 2009, 22:33:42
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 |
#15 · Zasláno: 5. 5. 2009, 23:26:40
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 |
#16 · Zasláno: 6. 5. 2009, 08:51:09
bohyn
Kajman_ úžasné, funguje to. Mnohorát Vám děkuji |
||
Časová prodleva: 15 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0