2011-10-19 6 views
0

EntityFrameworkで全文検索を実装しようとしています。LINQとEFでフルテキスト検索を使用する

My DBにはUsersというテーブルとUserInfoEntriesというテーブルがあります。テーブルユーザは他のいくつかのテーブルに接続され、テーブルUserInfoEntriesにはユーザ情報が含まれます。

私はユーザー情報を取得したいときは、User.UserInfoEntriesのエントリを通過し、最も古いエントリタイムスタンプを持つエントリを取得します。

フルテキスト検索のキーとして使用するプロパティは、UserInfoEntry内の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 
} 

私はフルネームでフルテキスト検索を使用したいと思います。クエリをSQLにトランスレートするより簡単な方法はありますか?

答えて

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と呼ばれていることを期待しています。

+0

ミスして申し訳ありませんが、私はこの場合フルテキスト検索を実行する方法が不思議でした。言い換えれば、FTSを使ってある名前のユーザーを見つける方法。 (キーワードマットの場合、matt、matthewなどの名前のユーザーをすべて取得したいと考えています)。 – mtomic

関連する問題