Mysql
 sql >> Base de données >  >> RDS >> Mysql

recherche de pertinence sur plusieurs tables liées

Sur la base de la réponse dans le lien que vous avez posté, vous pourriez faire quelque chose comme ça

SELECT id,SUM(relevance) as total_relevance FROM (
SELECT 
    id, 
    (MATCH(title) AGAINST ('search string')) AS relevance
    FROM Cards
UNION
SELECT 
    Cards.id,
    (MATCH(brigade) AGAINST ('search string')) AS relevance
    FROM Brigades 
    INNER JOIN CardBrigades ON Brigades.id=brigade_id
    INNER JOIN Cards ON card_id=Cards.id 
UNION
SELECT 
    Cards.id,
    (MATCH(identifier) AGAINST ('search string')) AS relevance
    FROM Identifier 
    INNER JOIN CardIdentifier ON Identifier.id=identifier_id
    INNER JOIN Cards on card_id=Cards.id 
) AS combined_search 
GROUP BY id
HAVING total_relevance > 0

Je ne sais pas si cela fonctionnerait bien. Vous feriez peut-être mieux de regarder une autre solution comme Solr, Lucene ou même un moteur de stockage NoSQL.