0

従来のドキュメント管理アプリケーションで「通常の」検索と全文検索を組み合わせようとしています。現在、彼らは100%別れています。現在、ユーザは、文書上のユーザ定義インデックスを検索する通常の検索を実行することも、文書の内容を検索する全文検索を実行することもできる。彼らは一緒に働くことはできませんし、組み合わせた結果を得ることはできません。それが私が実装しようとしているものです。IqueryableとIterableを交差させる<int>とSqlQuery <int>

述語ビルダとLinq To Entitiesを使用して、EntityFrameworkで各検索を構成するために、通常の検索が実装されています。結果はIQueryableで、各intはDocumentテーブルの主キーと一致します。

全文検索は、Database.SqlQueryを使用して実行される生のSQLを生成することによって実装されます。 (Entity Frameworkはv6のフルテキストをサポートしていません)。この場合も、それぞれの結果のintはDocumentテーブルの主キーと一致します。

結果の2つのIEnumerablesに交差するだけで十分ですが、明らかに2つの別々の検索が行われます。私は検索が現在どのように動作しているかを完全にやり直さなくても、データベースへの一回の旅行でそれを行う方法を見つけ出そうとしています。私は、遅延実行を失うことなくSqlQueryからIQueryableに変換することは不可能だと読んだことがありますが、誰かが私が考慮しなかった別の方法があるかもしれないと考えました。ありがとう。

答えて

0

検索を1つの結合検索で行う必要がある場合は、実際に実装の変更が必要な代わりに、SqlクエリをIQueryable検索に変換する必要があります。データベースサーバー上でIQueryableとSqlQueryを組み合わせる方法はありません。完全検索の結果をIQueryableに変換しない限り、データベースへの2回の別々のトリップです。

関連する問題