2015-05-02 34 views
0

我有一個名爲「location_level」的表,它將唯一的「id」字段與「value」字段(美國,巴西,密歇根州)相關聯。 「值」字段設置爲全文索引。在關係表上SQL多關鍵字全文搜索返回按關聯度排列的所有結果

我有另一個名爲「poll_location_level」的表,它將「poll_id」字段與來自「location_level」的唯一「id」字段之一相關聯。

我想弄清楚如何一次完成多個術語的全文搜索,它將返回「poll_location_level」中的所有「poll_id」字段以及與每個相關的相關性評級。

因此,如果搜索包括「密歇根」 +「美國」,那麼我想:

1)「poll_id」 1(從「poll_location_level」),以最高的相關性分級返回(因爲「 1)與「location_level_id」1和3都相關聯)

2)將以第二高評價返回的「poll_id」3(來自「poll_location_level」)(因爲「poll_id」3與「location_level_id」 3)

3)「poll_id」2(來自「poll_location_level」)與最低評級(因爲「poll_id」2不與任何「location_level_id」字段相關聯。

http://sqlfiddle.com/#!9/968e5/4

回答

0

全文搜索竟然是錯誤的做法,因爲我找的精確匹配。

這裏是我結束了使用該怎麼做我需要做的(感謝來自IRC一些幫助):

SELECT ploc.poll_id,COUNT(loc.id)如N FROM poll_location_level AS PLOC LEFT JOIN location_level AS loc loc ploc.location_level_id = loc.id AND loc.value IN('United States','Michigan')GROUP BY ploc.poll_id ORDER BY n DESC