2011-05-26 117 views
2

我有下面的存儲過程,全文搜索執行2008年問題

CREATE Procedure sp_SearchDB (
    @SearchWord nvarchar(200) 
) 

SET @SearchWord = '"*' + @SearchWord + '*"' 

Select * 
    from Table1 
    Where Contains(Description, @SearchWord) 

當我搜索「SQL服務器」,它返回我與「SQL」或「服務器」的結果,但不會用「SQLServer」返回數據(如果沒有空格),同樣如果給searchword = SQLServer,它不會返回「SQL Server」(用空格)。我怎樣才能得到結果「SQL Server」和「SQLServer」?

回答

0

您需要按照以下步驟執行該過程:

EXEC sp_SearchDB N'SQL SERVER' 
+0

如果您發佈的代碼,XML或數據樣本,** **請在高亮文本編輯器的線和編輯器工具欄上的「代碼示例」按鈕('{}')點擊很好的格式和語法高亮它! – 2011-05-26 04:58:07

+0

我試過了,但它不起作用。它僅使用SQL或SERVER或[SQL SERVER]返回行,但不會返回SQLServer(不帶空格)。 – Sue 2011-05-27 02:10:48

+0

你可以發佈你用來執行存儲過程的代碼嗎? – 2011-05-27 10:11:51

0

壞消息,你可以做到這一點,但它會給你一些誤報。請嘗試:

EXEC sp_SearchDB N'SQL' 

如果您關心誤報,他們的答案是:沒有辦法做到這一點。如果你想兩者的「SQL Server」和「SQLServer的」你應該做的:

Select * from Table1 Where Contains(Description, '"SQL Server" OR "SQLServer"'). 

您可以編寫代碼,都會盡量不要找兩個詞一起分離。如果您的客戶搜索:

baby sitter 

您的代碼將創建這個變化當它找到一個空格:

'"baby sitter" or "babysitter"' 

我希望你能得到它。