sql >> Database teknologi >  >> RDS >> Mysql

relevanssøgning på tværs af flere relaterede tabeller

Baseret på svaret i det link, du postede, kunne du gøre noget som dette

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

Jeg er ikke sikker på, hvor godt dette ville fungere. Du kan være bedre stillet at se på en anden løsning såsom Solr, Lucene eller endda en NoSQL-lagringsmotor.



  1. Skift kolonnetyper i en stor tabel

  2. matcher hele ord, mens du ignorerer affikser af ord ved hjælp af regex

  3. Kvalificering af et midlertidigt tabelkolonnenavn i jOOQ

  4. Hvordan kan jeg finde en kolonne overalt i SQL Server?