【发布时间】:2010-09-03 17:41:45
【问题描述】:
所以这个问题真的有两个部分:
1) 如何将CONTAINSTABLE() 与一堆内部连接一起使用?
假设有两个表:
Item (ItemID, CategoryID, Name)
Category (CategoryID, ParentCategoryID, Name)
使用“哑”like 搜索如下:
create view [db].[vItem]
as
select i.*, c1.Name as SubCategory, c2.Name as Category, c3.Name as Department
from Item i
inner join category c1 on(c1.CategoryID=i.CategoryID)
inner join category c2 on(c1.ParentCategoryID=c2.CategoryID)
inner join category c3 on(c2.ParentCategoryID=c3.CategoryID)
然后做:
select *
from vItem
where (Name like '%[word 1]%' or SubCategory like '%[word 1]%' or Category like '%[word 1]%' or Department like '%[word 1]%') [and ... word n]
我可以在CONTAINSTABLE() 上删除视图和内部连接 4 次,但那是 a) 丑陋 b) 不一样(每个键表都需要包含所有搜索词才能得到任何结果)
2) 如何在查询语言中使用以上所有内容。
同样,假设我只使用 like 方法 - 它非常简单。
from i in db.VItem
where i.Name.Contains("word 1") ...
全文搜索如何做到这一点?
【问题讨论】:
标签: sql-server linq-to-sql sql-server-2008 full-text-search