【发布时间】:2016-12-20 20:36:21
【问题描述】:
我正在尝试在旧版文档管理应用程序中结合“常规”搜索和全文搜索。目前,它们是 100% 分离的。目前,用户可以执行针对用户定义的文档索引进行搜索的常规搜索,也可以执行搜索文档内容的全文搜索。他们不能同时做两者并获得综合结果。这就是我想要实现的。
常规搜索是使用谓词构建器和 Linq To Entities 来实现的,以在 EntityFramework 中构造每个搜索。结果是一个 IQueryable,其中每个 int 都与 Document 表中的主键匹配。
全文搜索是通过生成使用 Database.SqlQuery 执行的原始 SQL 来实现的。 (实体框架在 v6 中不支持全文)。同样,每个结果 int 都匹配 Document 表中的主键。
只需对生成的 2 个 IEnumerables 进行相交就很容易了,但这显然是在进行 2 次单独的搜索。我试图找出一种方法来一次访问数据库,而不必完全重做搜索当前的工作方式。我已经读到不可能在不丢失延迟执行的情况下从 SqlQuery 转换为 IQueryable ,但我认为有人可能有另一种我没有考虑过的方式。谢谢。
【问题讨论】:
标签: c# sql-server entity-framework linq-to-entities full-text-search