2010-08-09 14 views
23

@Keyword parametresini ileterek tablodaki 3 sütun karşısında tam metin araması gerçekleştiren temel saklı yordamım var. Tek kelimeyle iyi çalışıyor ama birden fazla kelimeyi geçmeye çalıştığımda düşüyor. Neden olduğundan emin değilim. Hata diyor: tam metin arama durumdaFullText Araması giriş dizesinde birden fazla sözcük kullan

sözdizimi hatası yakın 'arama öğesi'

SELECT  S.[SeriesID], 
      S.[Name] as 'SeriesName', 
      P.[PackageID], 
      P.[Name]  
FROM  [Series] S 
INNER JOIN [PackageSeries] PS ON S.[SeriesID] = PS.[PackageID] 
INNER JOIN [Package]  P ON PS.[PackageID] = P.[PackageID] 
WHERE CONTAINS ((S.[Name],S.[Description], S.[Keywords]),@Keywords) 
AND (S.[IsActive] = 1) AND (P.[IsActive] = 1) 
ORDER BY [Name] ASC 

cevap

34

Sen @Keyword parametre üzerinde bazı pre-processing yapmak zorunda kalacaktır 'bu da arama öğedir' SQL deyimine geçmeden önce. SQL, anahtar kelime aramalarının boolean mantığıyla ayrılacağını veya tırnak içine alınacağını bekler. Eğer ifade için arıyorsunuz, yani, o tırnak içinde olmak zorunda:

SET @Keyword = '"this is a search item"' 

o zaman daha fazlası için

SET @Keyword = '"this" AND "is" AND "a" AND "search" AND "item"' 

gibi bir şey ihtiyacınız olan tüm kelimeleri aramak istiyorsanız bilgi için, Örnekleri belgesine bakın, özellikle T-SQL CONTAINS syntax'a bakın.

Ek bir not olarak, tam metin sorgunuzu dağıtmadığınız için çift tırnak karakterini (boşlukla) değiştirdiğinizden emin olun. Bunun nasıl yapılacağı ile ilgili ayrıntılar için bu soruya bakın: SQL Server Full Text Search Escape Characters?

+0

Teşekkür ederiz. Gördüğüm MSDN belgelerinin neden bu kadar basit, ancak son derece yaygın bir örnek olmadığından emin değil. – MikeTeeVee

+0

@ Aaron Bu VE İşleç, CONTAINS yerine MATCH kullanılıyorsa işe yarar mı? MATCH durumu – Raj

+0

ile AND için herhangi bir çıktı almıyorum Çünkü "? Biz koymak çift?" Içeren sözcükleri nasıl ararız veya sözdizimi nedir? – MonsterMMORPG

İlgili konular