使用全文搜索查找精确匹配

6

如何在Sql Server 2008中使用全文搜索查找精确字符串匹配?我一直很难办,但是我在网上找不到一个令人满意的解决方案。

举个例子,如果我要查找字符串 "Bojan Skrchevski",我希望第一个结果正好是这个字符串。

到目前为止,我尝试将字符串格式化为:"Bojan* NEAR Skrchevski*" 并调用CONTAINSTABLE获取结果,但是此字符串格式化为返回更多结果,例如Bojana和Bojananana等。我还尝试按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);

我希望能够得到准确的排序方式,而不是得到"Oxford 7 24 5 London"这样的结果。
要如何格式化字符串才能正确地实现这一点?
2个回答

1

有两个选项

1) 这将获取所有名称中带有“Mountain”的项

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

2)这将获取所有在文档中具有这3个字符串的项目,无论顺序如何。

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

这取决于你真正想要什么,但我并没有完全理解。

如果我误解了,请发一个示例以及期望的结果。

祝好,

Kristof


@Kristoff - 例如:如果我搜索像这样的字符串:“Oxford 24 3 6 London”,并且如果有“Oxford 3 24 6 London”,那么它也会被返回。我只想要精确匹配的结果,而且顺序也必须完全一致。 - TheBoyan
参考以下链接可找到示例:http://msdn.microsoft.com/zh-cn/library/ms142583.aspx - Mike

0
也许一种方法是使用全文搜索选择几个结果,然后从这些结果中SELECT特定的一个。但也许有更好的解决方案。
我尝试了这种方法,它确实有效。而且比仅仅SELECT值要快得多。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接