2009-06-04 73 views
-1

我有以下存儲過程: -問題與搜索查詢我的SQL Server存儲過程

SELECT Id, Name 
FROM FooBars 
WHERE CONTAINS(Name, 'FORMSOF(Tesaurus, @query)') 

工作正常時,有一個詞我查詢:如。 foo * 但是,當我想要查找多個單詞時,它會失敗。 例如。 foo * bar *(這意味着任何以foo開頭並以bar開頭的單詞)。

我的@query參數需要什麼樣的格式才能使用同義詞庫爲全文搜索啓用多個單詞?

回答

1

據我知道,如果你要搜索兩個或多個表情,你需要連接那些要麼AND,OR或NEAR,這樣的事情(直接從聯機叢書):

USE AdventureWorks; 
GO 

SELECT Name 
FROM Production.Product 
WHERE CONTAINS(Name, '"chain*" OR "full*"'); 
GO 

SELECT Description 
FROM Production.ProductDescription 
WHERE CONTAINS(Description, 'bike NEAR performance'); 
GO 

SELECT Description 
FROM Production.ProductDescription 
WHERE ProductDescriptionID <> 5 AND 
CONTAINS(Description, ' Aluminum AND spindle'); 

如果以及如何與您的FORMSOF(...)表達式一起工作對我而言並不明確 - 但我相信您可以快速嘗試,不是嗎?

SELECT Id, Name 
FROM FooBars 
WHERE CONTAINS(Name, 'FORMSOF(THESAURUS, "foo*")' 
    OR 'FORMSOF(THESAURUS, "bar*")') 

此外,請確保在FORMSOF()表達式中正確拼寫「同義詞庫」! :-)

Marc

+0

我編輯了你的文章,修復了最終的SQL語句,使它正確運行。我花了一些時間確定我收到了好的結果後,還有更多評論。 – 2009-06-04 08:05:09