全文搜索具有基於匹配的自動排序功能。
如果你已經建立了適當的全文索引,在ID列(我假設在你的例子中用你的例子中的值1,2,3和4標記)上的唯一聚簇索引,那麼你所要做的就是運行下面的查詢。
DECLARE @search varchar(100) = '"sql*" AND "java*" AND "net*"'
SELECT t.*
FROM tlbSearch t
INNER JOIN CONTAINSTABLE (tblSearch, searchColumn, @search) Ktbl ON T.ID = Ktbl.[key]
ORDER BY Ktbl.[rank] ASC
爲了利用全文搜索,您必須使用全文相應的過濾功能。全文的LIKE
和=
的等效項爲FREETEXT
和CONTAINS
,以及它們的FREETEXTTABLE
和CONTAINSTABLE
,它們會自動返回一個包含所需rank
列的表。
此外,爲了使其發揮作用,您的所有關鍵字都需要位於同一列中 - 事實證明這是一種冗餘,但這是全文搜索所需的。所以,你的tblSearch需要有這樣的結構:
+----+----------------------------------+
| ID | searchColumn |
+----+----------------------------------+
| 1 | acce java net take |
| 2 | share java net access sql python |
| 3 | no tech |
| 4 | sql server with |
+----+----------------------------------+
(如果你想發佈的數據表#2像我一樣,you can use this)
是關鍵字是存儲逗號分開,單個變量?或每個關鍵字是單獨的變量 –
現在單個變量和分裂在一個表中,但如果需要,那麼我可以保持它們分開,這不是一個問題。 –