我们曾经有一个搜索,它会检查两列中的某些单词。两列都必须包含一些提供的单词,所以我们使用 AND ... 毫无疑问,FULLTEXT INDEX 用于列。
选择或多或少是这样的:
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 列但考虑到我只需要在 column1 中搜索 word1 或 word2 (如果我们在 column2 中有 word1 或 word2 不感兴趣)。还要考虑在 where 子句中的 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