Autor Zpráva
Casper
Profil
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 *
Kajman_
Profil *
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'

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0