我是新來的自由文本搜索,所以請原諒這個新手問題。假設我有以下的全文索引:跨連續列的全文搜索?
Create FullText Index on Contacts(
FirstName,
LastName,
Organization
)
Key Index PK_Contacts_ContactID
Go
我想這樣做對級聯
FirstName + ' ' + LastName + ' ' + Organization
所有三列的自由文本搜索,這樣例如
- 搜索
jim smith
回報所有名爲Jim Smith的聯繫人 - 搜索
smith ibm
返回所有名爲Smith的聯繫人,他們工作在t IBM
這似乎是一個相當常見的情況。我本來期望這工作:
Select c.FirstName, c.LastName, c.Organization, ft.Rank
from FreeTextTable(Contacts, *, 'smith ibm') ft
Left Join Contacts c on ft.[Key]=c.ContactID
Order by ft.Rank Desc
但這顯然是做smith OR ibm
;它會返回許多不在IBM工作的Smiths,反之亦然。令人驚訝的是,搜索smith AND ibm
會得到相同的結果。
此我想要做什麼......
Select c.FirstName, c.LastName, c.Organization
from Contacts c
where Contains(*, 'smith') and Contains(*, 'ibm')
...但我不能參數來自用戶的查詢 - 我將不得不分手的搜索字符串的話我和組裝動態SQL,這是醜陋的和不安全的。
謝謝 - 我結束了使用計算列/觸發器方法來填充SearchText字段,並索引。 – 2009-12-19 12:36:40