Autor | Zpráva | ||
---|---|---|---|
Casper Profil |
#1 · Zasláno: 15. 4. 2010, 22:42:07 · Upravil/a: Casper
Dobrý den, programuji fulltextové hledání a v rámci správného řazení výsledků bych potřeboval získat počet nalezených slov pro každé hledané slovo. Tedy rovnou v SQL dotazu. Můj vypadá nějak takto:
mysql_query(" SELECT nazev, nazev_url, popis, MATCH(nazev_url) AGAINST ('".$search."' IN BOOLEAN MODE) AS s_nadpis, MATCH(popis) AGAINST ('".$search."' IN BOOLEAN MODE) AS s_popis FROM firmy WHERE MATCH(nazev_url) AGAINST ('".$search."' IN BOOLEAN MODE) OR MATCH(popis) AGAINST ('".$search."' IN BOOLEAN MODE) ORDER BY 5 * s_nadpis + 2 * s_popis DESC "); přičemž v proměnné $search jsou již zpracovaná slova hledání s použitím operátoru * Tedy například "text* jedna*". Rád bych však získal počet takto nalezených slov tak, abych jej mohl použít pro přesnější řazení výsledků. Nyní z důvodu použití boolean mode je jedno, zda je slovo nalezeno 1x či 10x, je totiž pro každé nalezené slovo vždy vrácena hodnota 1 jakožto nalezeno. Z principu nemohu použít hledání bez boolean mode, protože je pro mě zásadní operátor * |
||
Časová prodleva: 4 dny
|
|||
Kajman_ Profil * |
#2 · Zasláno: 20. 4. 2010, 09:58:28
Funkci na počet výskytů slova v řetězci mysql nemá. Jediné, co znám, je celkem náročné na výkon.
('Délka původního řetěce' - 'délka původního řetězce, kde bylo dané slovo nahrazeno za nic')/'délka hledaného slova' |
||
Časová prodleva: 16 let
|
0