sql >> Databasteknik >  >> RDS >> Mysql

relevanssökning i flera relaterade tabeller

Baserat på svaret i länken du postade kan du göra något liknande

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

Jag är inte säker på hur bra detta skulle fungera. Du kanske är bättre att titta på en annan lösning som Solr, Lucene eller till och med en NoSQL-lagringsmotor.



  1. Hur man säkerhetskopierar och återställer en PostgreSQL-databas

  2. Lagra funktionsnamn i databasen och kör det sedan

  3. Django kunde inte hitta MySQLdb pythonmodul

  4. Kul med (columnstore) komprimering på ett väldigt stort bord – del 2