Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Search engines style Google

    Salve a tutti!

    Ho realizzato un motore di ricerca interno al mio sito utilizzando php e mysql attraverso ricerche fulltext.

    A questo punto vorrei mostrare i risultati della ricerca con uno stile simile a quello di Google e dello stesso Html.it, ossia vorrei :

    -1. evidenziare le parole cercate;
    -2. mostrare solo una parte del testo (estratto da campi del database) contenente i termini della ricerca in maniera tale da mostrare il termine di ricerca nel proprio contesto.

    In parole povere vorrei presentare il risultato in questo modo:

    ... bla bla termine ricerca 1 bla bla bla termine ricerca 2 bla bla ...
    ... bla termine ricerca 3 termine ricerca 1 bla bla bla bla bla. bla bla bla bla ...
    ... bla bla termine ricerca 2 bla bla bla. Termine ricerca 2 bla bla bla ...

    Per quanto riguarda l' evidenziare i termini della ricerca non c'è problema ... ho risolto subito!

    Non riesco invece in alcun modo a tagliare le porzioni di testo in corrispondenza dei vari termini di ricerca!!!

    Spero qualcuno possa aiutarmi ... grazie in anticipo!

  2. #2
    Puoi risolvere con str_replace() .

    Butto giù il codice al volo:

    Codice PHP:

    $chiave 
    $_POST['chiave_di_ricerca'];

    // codice query e fetching.

    $testo_da_db $fecth['nome_colonna'];
    // eccetera eccetera

    // al momento di stampare l'outut fai lo string replace
    $testo_da_db str_replace($chiave"<span class=\"formato_particolare\">$chiave</span>"$testo_da_db);

    echo 
    $testo_da_db
    Dovrebbe funzionare, ma dagli un'occhiata prima.
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  3. #3
    Grazie per la risposta ma questo risolve il problema dell' evidenziazione dei risultati della ricerca ma non quello di tagliare parti del testo che contengano i termini della ricerca!!!

  4. #4
    Ho provato con questa funzione da me realizzata

    Codice PHP:

    function TagliaStringa2($stringa$parola$distanza){    

     
    $posizione_parola strpos($stringa$parola);
     
    $lunghezza_parola strlen($parola);
     
     if (
    $posizione_parola $distanza) {
       
    $taglio_inizio $posizione_parola $distanza;
       
    $stringa_tagliata_inizio=substr($stringa$taglio_inizio$distanza);
       
    $first_space=strpos($stringa_tagliata_inizio," ");  
       
    $stringa_inizio=" ... ".substr($stringa_tagliata_inizio$first_space);    
     } 
     else {
    $stringa_inizio=substr($stringa0$posizione_parola);
     }
        
     
     
    $taglio_fine $posizione_parola $lunghezza_parola    ;
     
    $stringa_tagliata_fine=substr($stringa$taglio_fine$distanza);    
     
     if (
    strlen($stringa_tagliata_fine) >= $distanza ) {
             
     
    $last_space=strrpos($stringa_tagliata_fine," ");  
     
    $stringa_fine=substr($stringa_tagliata_fine0,$last_space)." ... ";     
     }
     else { 
    $stringa_fine=substr($stringa_tagliata_fine, -$posizione_parola);
     }
          
         return 
    $stringa_inizio.$parola.$stringa_fine;    


    che funziona bene solo nel caso in cui il termine della ricerca sia una sotto-stringa del testo ma entra in crisi quando sono presenti più parole separate!

    Non so più come fare!!! Spero in un vostro aiuto grazie!

  5. #5
    Possibile che nessuno realizzando un sito con un motore di ricerca interno non si sia mai imbattuto in un problema di questo tipo???

    Eppure all' interno del forum (ma anche fuori) non sono ancora riuscito a trovare nessuna soluzione !

    Ringrazio chiunque mi possa aiutare

  6. #6
    Perché non provi a scomporre il testo per gli spazi e a mettere ogni singola parola così ricavata in un array?

    Credo che poi ti potrebbe bastare mettere nella stringa di output solo (esempio) 2 parole prima e due dopo la parola cercata..... insomma due chiavi dell'array prima e due dopo.
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.