2009-07-23 10 views
1

LINQにフルテキストインデックスクエリ(CONTAINSなど)を実行するよう指示する方法はありますか? LINQが現在私のために構築しているテキスト検索クエリは、LIKE演算子で終わるだけです。このためにストアドプロシージャを作成する必要はありますか?SQL Server:LINQを使用したフルテキストインデックスへのアクセス

例が素晴らしいです!ありがとうございました!

+0

デュープ:http://stackoverflow.com/questions/224475/is-it-可能なフルテキスト検索-fts-with-linq –

答えて

0

LINQは汎用のクエリ抽象化レイヤーであるため、LINQを使用してサーバー固有の実装を直接実行することはできません。ストアモデルのビューを使用してEFでこれを行うことができます。

つまり、context.ExecuteQuery(string)を使用すると、LINQ to SQLを使用してこれを行うことができます。 ExecuteQueryを使用する場合は、クエリがサーバーに直接渡されるため、単純な文字列連結ではなく変数としてパラメータを渡すことを忘れないようにしてください。正しく処理されないとSQLインジェクションが発生する可能性があります。ここでは、SQLインジェクションを避ける例を示します。

Dim searchName = "foo" 

Dim SQL As String = "Select ID, LastName, FirstName, WebSite, TimeStamp " & _ 
    "From dbo.Author " & _ 
    "Where Contains (LastName, {0})" 

Dim authors As IEnumerable(Of Author) = context.ExecuteQuery(Of Author)(SQL, searchName) 
0

また、LuceneとLinq to Luceneの実装を見ることをお勧めします。私の経験では、SQLフルテキストインデックス(特にSQL 2008の場合)を検索するよりもパフォーマンスが大幅に向上しています。

関連する問題