有没有人想出一种执行全文搜索的好方法(FREETEXT() CONTAINS()
)对于使用标准 LinqToSql 查询语法的任意数量的任意关键字?
我显然希望避免必须使用存储过程或必须生成动态 SQL 调用。
显然,我可以将搜索字符串输入到使用 FREETEXT() 或 CONTAINS() 的 SPROC 参数中,但我希望在搜索和构建查询方面更具创意,例如:
“意大利辣香肠披萨”和汉堡,而不是“苹果派”。
我知道这很疯狂 - 但如果能够直接从 LinqToSql 执行此操作不是很好吗?任何有关如何实现这一目标的提示将不胜感激。
更新:我想我可能会做一些事情here...
另外:我回滚了对问题标题所做的更改,因为它实际上改变了我所问内容的含义。我knowLinqToSql 不支持全文搜索 - 如果我想知道这一点,我会问这个问题。相反 - 我更新了我的标题来安抚那些喜欢编辑的群众。
我设法通过使用表值函数封装全文搜索组件来解决这个问题,然后在我的 LINQ 表达式中引用它,从而保持延迟执行的好处:
string q = query.Query;
IQueryable<Story> stories = ActiveStories
.Join(tvf_SearchStories(q), o => o.StoryId, i => i.StoryId, (o,i) => o)
.Where (s => (query.CategoryIds.Contains(s.CategoryId)) &&
/* time frame filter */
(s.PostedOn >= (query.Start ?? SqlDateTime.MinValue.Value)) &&
(s.PostedOn <= (query.End ?? SqlDateTime.MaxValue.Value)));
这里“tvf_SearchStories”是内部使用全文搜索的表值函数
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)