使用全文搜索查找完全匹配

时间:2011-11-01 10:35:37

标签: sql sql-server-2008 full-text-search

使用Sql Server 2008,如何使用全文搜索实际找到精确的字符串匹配。我真的很难过,而且我无法在网上找到满意的解决方案。

例如,如果我正在搜索字符串“Bojan Skrchevski”,我希望第一个结果就是这样。

到目前为止,我已经尝试将字符串格式化为:“Bojan * NEAR Skrchevski *”并调用CONTAINSTABLE来获取结果,但是此字符串被格式化为返回更多结果,如Bojana和Bojananana等。我还尝试了ORDER BY RANK ,但仍然没有成功。

此外,在我的字符串中,我有一个数字序列,如:“3 1 7”,但使用当前格式,它也会返回“7 1 3”等。

示例:

DECLARE @var varchar(4000);
SET @var = '"Oxford*" NEAR 24 NEAR 7 NEAR 5 NEAR "London*"'
SELECT [Key] FROM CONTAINSTABLE(dbo.[MyTable], [MyField], @var);

我希望能够得到确切的订单。结果不要“牛津7 24 5伦敦”。

如何格式化字符串以正确完成此操作?

2 个答案:

答案 0 :(得分:1)

有两个选项

1) 这将获得名称中包含Mountain的所有项目

SELECT Name, ListPrice
FROM Production.Product
WHERE ListPrice = 80.99
   AND CONTAINS(Name, 'Mountain');
GO

2) 这将获得在Document中具有这3个字符串的所有项目,无论顺序是什么

SELECT Title
FROM Production.Document
WHERE FREETEXT (Document, 'vital safety components' );

这取决于你真正想要的但我完全无法理解。

如果我遗漏了这一点,请发布样本,结果应该是什么。

KR,

克里斯托夫

答案 1 :(得分:0)

也许一种方法可以是使用全文搜索选择多个结果,然后SELECT从这些结果中选择特定结果。但也许可以有更好的解决方案。

我尝试了这种方法,但它确实有效。它的工作速度要快SELECT