1
我們曾經有過一次搜索,它會爲某些單詞檢查兩列。兩列都必須包含一些提供的單詞,所以我們使用AND ...毫無疑問在列上使用FULLTEXT INDEX。是否有可能使用CONTAINSTABLE在列1中搜索「word1」並在列2中搜索「word2」
的選擇或多或少是這樣的:
SELECT
*
FROM SomeTable
WHERE (CONTAINS(Column1, 'word1 OR word2') AND CONTAINS(Column2, 'word3 OR word4'))
現在我們需要添加對排名的結果。我們想要使用CONTAINSTABLE功能......只有一列很簡單。喜歡的東西:
SELECT
SomeTable.*,
tmp.RANK
FROM SomeTable
INNER JOIN CONTAINSTABLE(SomeTable, Column1, 'word1 OR word2') as tmp
ON tmp.[KEY] = SomeTable.ID
是否有可能與2列做,但考慮到我只需要尋找在列1字1或字詞2(不感興趣,如果我們有COLUMN2字詞1或字詞2)。還要考慮AND在哪裏。有什麼樣:
SELECT
SomeTable.*,
tmp.RANK
FROM SomeTable
INNER JOIN CONTAINSTABLE(SomeTable, (Column1, Column2), 'column1:(word1 OR word2) AND column2:(word3 OR word4)') as tmp
ON tmp.[KEY] = SomeTable.ID
我不喜歡多個連接的想法,並使用它你不能設置頂部CONTAINSTABLE(那麼你可能會失去正確的結果)。總結的排名最高值取決於有多少加入。但是......這有效,所以除非有更好的答案,否則我會選擇這個。 – Dandikas 2008-11-25 13:15:51