2016-06-20 115 views
1

我在一張表中有一堆我想要查詢搜索結果的文章。使用全文搜索我可以返回搜索關鍵字「彼此靠近」的項目列表。多個全文搜索SQL查詢合併和評分(排名搜索結果)

全文搜索似乎不允許使用NEAR分隔符的同義詞庫(FORMSOF)。

我想在SQL中做的事情是創建一個查詢或多個查詢,它們以不同的方式搜索相同的數據並返回分數(或使用全文搜索時返回RANK),那麼我想合併這些結果,所以沒有重複,並且總計行列/分數,以便我可以對這些分數進行排序。

此外,我還想搜索文檔已分配的「標籤」的單獨鏈接表,併爲具有相應標籤的用戶分配額外分數。

滿足這些要求的最佳實踐方法是什麼?

回答

0

全文搜索可以在CONTAINSTABLE聲明中進行搜索,如('"word*" near "another*"')。星號將有助於搜索任何以'word''another'彼此靠近排列的單詞。

另一方面,您可以啓動FORMSOF(Thesaurus, word) AND FORMSOF(Thesaurus, another)CONTAINSTABLE聲明搜索。

然後將結果合併並使用ORDER BY按給定的RANK進行排序。

+0

感謝您的信息。 我一直堅持這一點,但意識到我可以爲不同的搜索結果編寫特定查詢,例如通過執行嵌套查詢,在「另一個」附近的「單詞」和formof(詞庫,單詞)這是UNION'd,然後根據結果進行分組,然後對總RANK進行求和。 它可能不是最優雅的解決方案,但它的可擴展性和快速工作。 – TattooedGun

+0

我的榮幸!偉大的,如果它有幫助,很好,你找到一個解決方案! – gofr1