• User Attivo

    Motore di Ricerca Interno con Against

    Buongiorno.

    Ho un sito dove ho creato un motore di ricerca utilizzando il metodo FULLTEXT e quindi l'AGAINST e lo SCORE.

    Ora ho bisogno di fare una modifica abbastanza importante: dovrei mostrare per primi quelli che hanno caricato la foto, così da avvantaggiarli e far si che chi non ha messo la foto sia tentato di farlo.
    Cosa posso usare? Ho trovato l'HAVING ma non ho capito bene il funzionamento e soprattutto non so se è quello che cerco (non mi sembra).

    Grazie 🙂


  • ModSenior

    Ciao portapipe,
    dovresti postare la struttura del database per poter ricevere un aiuto.


  • User Attivo

    Beh la struttura è semplice:

    • Un titolo
    • Un campo testo
    • Un campo foto (solo link)

    Tutti FULLTEXT. Quello che faccio è fare una ricerca nei cambi titolo e testo e visualizzarli in base allo score.
    Quello di cui ho bisogno è fare un "semplice" controllo sui risultati e mostrare prima quelli che hanno il campo foto !='' oppure null oppure empty (hai capito :2:


  • ModSenior

    Basta un semplice if:

    
    SELECT *, if(`foto` != '', 1, 0) AS ordina_per_foto FROM `misset` ORDER BY ordina_per_foto DESC
    
    

  • User Attivo

    Il sistema che uso io è il seguente (è un esempio, lo script completo ha molti controlli e variabili e sarebbe difficile da riproporvi):

    SELECT *, MATCH(title, body) AGAINST ('PHP') AS score FROM articles WHERE MATCH(title, body) AGAINST('PHP')
    

    Con questo ho un vantaggio sul tipo di risultati che vado a ricercare, in base alla pertinenza.

    E' un sistema di ricerca che necessita di una buona precisione e mi sembra che questo sia il migliore (magari mi sbaglio ma ho ricercato molto).

    Qualche soluzione/consiglio?