加入MULTIPLE行进行全文搜索

时间:2012-04-02 12:27:55

标签: sql

请仔细阅读,因为我的英语不好,问题不是一个简单的答案!

我有一个像这样简单的结构:

table nodes
------------------------
nodeId | name       
     1 | Mazda Miata 2.0
     2 | Red Cars        
     3 | Mazda Cars 
     4 | Sport cars

table associations
------------------------
nodeId | hasNodeId
     1 | 2
     1 | 3
     1 | 4
     3 | 4
     3 | 1

并且我想根据表“association”指定的内容选择连接(在同一行)所有关联行的第一个表的任何行

问题是,将一个节点与一个节点连接起来,可以得到一个SINGLE相关节点的全文相关性:我想要的是所有相关节点的相关性

谢谢

编辑,连接结果应该像你想象的那样,使用全文搜索:

nodeId | name                   | joinedName    |     fulltextRelev
     1 | Mazda Miata 2.0        | Red Cars      |     4.2
     1 | Mazda Miata 2.0        | Mazda Cars    |     2.3
     1 | Mazda Miata 2.0        | Sport Cars    |     3.2

前一个是一个抽象表,我真正想要的是获得唯一/不同的nodeId,以及上一个表的fulltextRelevance的总和...像这样:

nodeId | name                   |     fulltextRelevSUM
     1 | Mazda Miata 2.0        |     9.7

9.7 = 4.2 + 2.3 + 3.2

2 个答案:

答案 0 :(得分:1)

你只需要按照你的nodeId进行分组:

SELECT
nodeId, name, SUM(fulltextRelevSUM) AS fulltextRelevSum
FROM
/*your already done work here*/
GROUP BY nodeId

答案 1 :(得分:0)

    SELECT 
    n.nodeID,
    n.name,
    n2.name as joinedName,
    MATCH(n.name) AGAINST(n2.name) AS fulltextRelev
    FROM NODES n
    LEFT OUTER JOIN ASSOCIATIONS a
    ON n.nodeID = a.nodeID
    LEFT OUTER JOIN nodes n2
    ON n2.NODE_ID = a.hasNodeID
    WHERE n.nodeID = 1

我不完全理解您的文字相关性部分。你能进一步解释一下吗?上面的查询将为您提供所需的前4行,第二部分的查询应该很容易