当前位置:  开发笔记 > 编程语言 > 正文

LinqToSql和全文搜索 - 可以做到吗?

如何解决《LinqToSql和全文搜索-可以做到吗?》经验,为你挑选了1个好方法。

有没有人想出一个FREETEXT() CONTAINS()使用标准LinqToSql查询语法对任意数量的任意关键字执行全文搜索()的好方法?

我显然希望避免使用存储过程或必须生成动态SQL调用.

显然,我可以将参数中的搜索字符串输入到使用FREETEXT()或CONTAINS()的SPROC,但我希望通过搜索更具创造性并构建如下查询:

"意大利辣香肠披萨"和汉堡,而不是"苹果派".

疯了我知道 - 但是能不能直接从LinqToSql做到这一点是不是很好?任何有关如何实现这一目标的提示将非常感激.

更新:我想我可能会在这里做点什么......

另外:我回滚了对我的问题标题所做的更改,因为它实际上改变了我所要求的含义.我知道 LinqToSql不支持全文搜索 - 如果我想知道,我会问这个问题.相反 - 我更新了我的头衔,以安抚编辑快乐触发手指群众.



1> LaserJesus..:

我已经设法通过使用表值函数来封装全文搜索组件,然后在我的LINQ表达式中引用它来维护延迟执行的好处:

string q = query.Query;
IQueryable 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'是表值函数,内部使用全文搜索

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有