2011-11-01 126 views
5

使用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

或许有办法可以选择与全文检索的几个结果,然后从SELECT这些结果的具体的一个。但也许可以有更好的解决方案。

我试过这种方法,它实际上工作。它的工作速度也快于SELECT的值。

1

有2个选项

1) 这将让这有山在他们的名字

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'); 

这取决于你真正想要什么,但我不能完全理解。

如果我错过了这一点,请发布样本,结果应该如何。

KR,

克里斯托夫

+0

@Kristoff - 例如:如果我搜索这样的字符串:“牛津24 3 6伦敦”,如果有“牛津3 24 6伦敦”,也会返回。我只需要确切的顺序完全匹配。 – TheBoyan

+0

仅供参考,可从以下位置找到示例:http://msdn.microsoft.com/en-us/library/ms142583.aspx – Mike