使用LINQ和EF进行全文搜索

时间:2011-10-19 18:54:22

标签: entity-framework full-text-search

我正在尝试使用EntityFramework实现全文搜索。

我的数据库有一个名为Users的表和一个名为UserInfoEntries的表。表用户连接到其他一些表,UserInfoEntries表包含用户信息。

当我想获取用户信息时,我会查看User.UserInfoEntries中的条目并获取具有最早输入时间戳的条目。

我想用作全文搜索的键的属性是UserInfoEntry中的FullName属性。

用于获取具有确切FullName的用户的LINQ如下所示:

from user in objectContext.Users

let currentInfoEntry = 
(from entry in user.UserInfoEntries
 orderby entry.EntryTimestamp descending
 select entry
).FirstOrDefault()

where currentInfoEntry.FullName == "Some Name"

select new UserWithInfo
{
    User = user,
    Info = currentInfoEntry
}

我想使用FullName的全文搜索。有没有比将查询转换为SQL更简单的方法?

1 个答案:

答案 0 :(得分:0)

这不是全文搜索。完全匹配只是一次普通搜索。您可以通过还原来简化查询:

var query = from x in objectContext.UserInfoEntries.Include("User")
            where x.FullName == "Some Name"
            orderby x.EntryTimestamp descending
            select x;

UserInfoEntry entry = query.FirstOrDefault();
User user = entry.User;

此查询要求您的UserInfoEntry实体具有名为User的导航属性,指向User实体。