假设用户输入“Vintage Audi Car”作为搜索条件
我的表格中有“描述”字段为Varchar(Max)
我想将用户输入的值搜索为Vintage OR Audi OR Car。结果应显示包含顶部“描述”中所有三个单词的行以及包含任意两个单词的行,然后显示包含任意一个单词的行。
让我知道如何实现这一目标。
我愿意使用全文搜索。
答案 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);