LINQにフルテキストインデックスクエリ(CONTAINSなど)を実行するよう指示する方法はありますか? LINQが現在私のために構築しているテキスト検索クエリは、LIKE演算子で終わるだけです。このためにストアドプロシージャを作成する必要はありますか?SQL Server:LINQを使用したフルテキストインデックスへのアクセス
例が素晴らしいです!ありがとうございました!
LINQにフルテキストインデックスクエリ(CONTAINSなど)を実行するよう指示する方法はありますか? LINQが現在私のために構築しているテキスト検索クエリは、LIKE演算子で終わるだけです。このためにストアドプロシージャを作成する必要はありますか?SQL Server:LINQを使用したフルテキストインデックスへのアクセス
例が素晴らしいです!ありがとうございました!
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)
また、LuceneとLinq to Luceneの実装を見ることをお勧めします。私の経験では、SQLフルテキストインデックス(特にSQL 2008の場合)を検索するよりもパフォーマンスが大幅に向上しています。
あなたは、テーブル値関数を使用してこれを行うことができますが、私はこのブログの記事で詳細を通過
デュープ:http://stackoverflow.com/questions/224475/is-it-可能なフルテキスト検索-fts-with-linq –