使用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伦敦”。
如何格式化字符串以正确完成此操作?
答案 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
。