Sql Server多字搜索和排名结果

时间:2012-01-24 13:16:48

标签: sql-server full-text-search

假设用户输入“Vintage Audi Car”作为搜索条件

我的表格中有“描述”字段为Varchar(Max)

我想将用户输入的值搜索为Vintage OR Audi OR Car。结果应显示包含顶部“描述”中所有三个单词的行以及包含任意两个单词的行,然后显示包含任意一个单词的行。

让我知道如何实现这一目标。

我愿意使用全文搜索。

2 个答案:

答案 0 :(得分:2)

使用命令CONTAINSTABLE:

使用全文搜索应该可以实现
SELECT * FROM Car 
INNER JOIN CONTAINSTABLE(Car, Description, 'ISABOUT (Vintage weight (.5), Audi weight (0.5), Car weight (0.5) )') AS A 
   ON Car.Id = A.[KEY] 
ORDER BY A.[RANK] DESC;

等级是按重量计算的,所以带有“Vintage Audi”描述的行将比描述“Audi”的行获得更高的排名。

答案 1 :(得分:0)

即使我有同样的问题,我使用MYISAM引擎解决了它

改变表Car

ALTER TABLE  Car ENGINE = MYISAM;

然后

select * FROM Car WHERE MATCH (Description) AGAINST ('Vintage Audi Car'  IN BOOLEAN MODE);