【发布时间】:2010-09-23 22:24:39
【问题描述】:
我们曾经进行过搜索,它会检查两列中的某些单词。两列都必须包含一些提供的单词,所以我们使用 AND ... 毫无疑问,FULLTEXT INDEX 用于列。
select 差不多是这样的:
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
【问题讨论】:
标签: sql sql-server tsql full-text-search