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

    [PHP+MySql] numero di parole trovate in una ricerca LIKE

    Ciao ragazzi mi trovo di fronte a un problema che mi ha fatto arrendere a tal punto da cercare un aiuto..

    Ho un form di ricerca dove offro la possibilità agli utenti di ricercare degli articoli scritti in base a delle parole chiave. Quindi per fare ciò ho scelto di utilizzare una query con LIKE (ho dovuto rinunciare a quella fulltext per svariati motivi)
    A questo punto vorrei creare una cosa particolare:

    Se quella parola è presente in uno o più articoli,vorrei contare quante parole o quante lettere metchano con quella inserita e poi ordinare la query in base all'articolo che propone un risultato più alto... Questa è un'idea mia,accetto anche altre proposte! Lo scopo sarebbe di ordinare il tutto in base a quello che presumibilmente è più attinente o comunque ha più rilevanza con ciò che si è cercato...

    Avevo pensato di fare una cosa del tipo:
    1)Eseguo la query
    2)Se ci sono2 o più risultati estraggo l'articolo
    3)Conto(???) eseguo questo script che mi valuta quale sia migliore creandomi una scaletta
    4)Riestraggo il tutto secondo l'ordine creato

    Come potrei fare?
    Mettiamo il caso abbia una tabella "Articoli" composta da:
    ID_Articolo
    Titolo
    Contenuto

    e io debba cercare solamente nel suo contenuto...

    Mi potreste aiutare per cortesia?

  2. #2
    Quello che chiedi è possibile solo con ricerche di tipo fulltext. Se dici quali sono gli svariati motivi per i quali non puoi utilizzare questo metodo forse ti si può dare una mano.
    Intanto puoi leggere questo
    http://www.mtxweb.ch/php_learn/?p=244
    PHP LEARN - Guide, tutorial e articoli sempre aggiornati
    NUOVO: standardLib; il potente framework PHP é ora disponibile
    *******************************************
    Scarica oggi la tua copia di MtxEventManager

  3. #3
    Il motivo per cui mi sono arreso ad usare la ricerca full text è principalmente 1: se la parola da cercare è in numero maggiore del 50% dei record allora non troverà nulla perchè la considera comune.. Però effettivamente a me serve che trovi sempre perchè magari con certe chiavi di ricerca gli utenti si potrebbero trovare meglio..

  4. #4
    forse però come l'hai fatta tu non me lo fa il problema..

  5. #5
    Originariamente inviato da mtx_maurizio
    Quello che chiedi è possibile solo con ricerche di tipo fulltext. Se dici quali sono gli svariati motivi per i quali non puoi utilizzare questo metodo forse ti si può dare una mano.
    Intanto puoi leggere questo
    http://www.mtxweb.ch/php_learn/?p=244
    Nemmeno immagini da quanto tempo stavo cercando questa cosa...

    Non è la prima volta che i tuoi post mi illuminano... come vuoi la statua? mezzo busto o figura intera?

  6. #6
    Originariamente inviato da oly1982
    Nemmeno immagini da quanto tempo stavo cercando questa cosa...

    Non è la prima volta che i tuoi post mi illuminano... come vuoi la statua? mezzo busto o figura intera?
    Per la statua vorrei una scultura equestre.

    Per il post, è piuttosto datato. Ho riscritto quella classe e l'ho inclusa nel framework che sto preparando (guarda l'ultimo articolo sul blog)
    PHP LEARN - Guide, tutorial e articoli sempre aggiornati
    NUOVO: standardLib; il potente framework PHP é ora disponibile
    *******************************************
    Scarica oggi la tua copia di MtxEventManager

  7. #7
    Ecco, adesso ho un po' più di tempo per rispondere anche a webking2003

    Non è possibile fare una ricerca come la vorresti tu con like per un semplice motivo.

    La query sarà tipo testo LIKE variabile OR testo LIKE altra variabile OR ...

    Il problema è che l'operatore OR si ferma alla prima computazione che risulta vera. Dunque

    a OR b OR c

    Se a è vero, b e c non saranno analizzati

    Dunque è impossibile contare quante occorrenze vengono trovate con un approccio LIKE - OR.
    PHP LEARN - Guide, tutorial e articoli sempre aggiornati
    NUOVO: standardLib; il potente framework PHP é ora disponibile
    *******************************************
    Scarica oggi la tua copia di MtxEventManager

  8. #8
    ...Capito!Ora mi è molto più chiaro che per ciò che devo fare devo utilizzare per forza il MATCH...Utilizzerò allora la tua classe di ricerca per prendere spunto,dovrò sicuramente cambiare la query perchè ho bisogno di inserirci delle INNER JOIN. Sono andato sul tuo sito http://www.mtxweb.ch è li che hai la nuova classe di ricerca?

    Scusa la domanda stupidissima,per includerla basta che metto la sola classe in un file a parte e faccio una include?

  9. #9
    Ho fatto la ricerca secondo ciò che mi ha consigliato maurizio ed è veramente perfetta!!!!

    Ora vorrei chiedere una cosa...

    Vorrei evidenziare il testo cercato e fino a che si tratta di una sola parola tutto ok...
    Ma quando mi trovo di fronte a due parole che non sono in ordine di scrittura nel testo oppure sono separate da un'altra non mi funziona... C'è un modo particolare per farlo? io utilizzo questo nella while:

    Codice PHP:
    $Titolo=eregi_replace("$key""<span style=\"background-color:#ff0\">[b]$key[/b]</span>"$Titolo); 
    c'è un modo migliore?

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.