Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    5

    MYSQL ricerca full text con un join

    ecco il mio problema:

    su una pagina web (php e mysql) dovrei implementare una ricerca fulltext
    la query funziona benissimo ed è molto veloce, ecco un esempio:
    codice:
    SELECT id, titolo, oggetto, descrizione, MATCH(titolo,oggetto,descrizione) 
    AGAINST('parola da cercare') AS attinenza FROM libri 
    ORDER BY attinenza DESC
    il problema è che devo assolutamente avere anche un dato (es: "foto" è un campo testo che contiene il percorso e il nome della foto ) che si trova in una tabella (foto) diversa da "libri", quindi pensavo di fare una semplice JOIN tra le due tabelle che hanno un campo in comune (id nella tabella libri e id_libro nella tabella foto)

    ad esempio

    codice:
    SELECT p.id,p.titolo,p.oggetto, p.descrizione,
    c.foto, MATCH (p.titolo,p.oggetto,p.descrizione) AGAINST ('parola da cercare') AS attinenza 
    FROM libri p
    LEFT JOIN foto c ON c.id_libro = p.id
    WHERE
    MATCH (p.titolo,p.oggetto,p.descrizione) AGAINST ('parola da cercare') 
    GROUP BY p.titolo  ORDER BY attinenza DESC
    ma questa query è lentissima e i dati mostrati non sono uguali alla prima query
    insomma non risulta valida.

    La domanda è questa: è possibile ottenere una risposta come la prima query ma ottenendo anche il valore del campo "foto" che si trova nell'altra tabella?
    sbaglio qualche cosa? esiste un sistema valido alternativo?

    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    5
    preciso che la seconda query oltre ad essere lentissima mostra il campo "foto" del JOIN
    sempre NULL, come se il JOIN tra le due tabelle non funzioni affatto usando il fulltext

  3. #3
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Hai un indice su id_libro?

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    5
    si, id_libro è indicizzato, se faccio un JOIN normale tra le due tabelle usando WHERE LIKE
    sul titolo, oggetto e descrizione senza usare il FULLTEXT la JOIN funziona
    id_libro non ha però un indice FULLTEXT perchè è un campo INT e non di testo

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.