2011-03-17 7 views
0

IFullTextQuery - 例外過ぎる可能性のあるオブジェクトがある場合、このコードは正常に動作します

Query query = parser.Parse(expression); 

IFullTextSession session = Search.CreateFullTextSession(this.Session); 

IFullTextQuery fullTextQuery = session.CreateFullTextQuery(query, new[] { typeof(MappedSequence) }); 

var l1 = fullTextQuery.List(); 

限り、クエリがあまりにも多くのオブジェクトを返しませんよう。クエリにオブジェクトが多すぎると、生成されたSQLコードが長すぎてSQL Serverが例外をスローします。 1つの解決策は、かなり遅いページングを使用してすべてのオブジェクトを取得することです。より良い解決策はありますか?

ありがとうございました。

C

答えて

0

私の記憶が正しければ、fullTextQuery.List()は大きな

select ... where ID_COL IN (id1, id2, id3, id4 ...) 

ID1、ID2を行い...数がSQL Serverで限定されているパラメータです。このようにして、luceneドキュメントからNHibernateエンティティを取得します。簡単に言えば、ページング以外の回避策はありません。

このような多くのデータを本当に取得する必要がある場合は、1000個の要素のページサイズを使用できます。

エンティティの1000を取得すると、画面上に表示すると、どこかで遅くなる場合があります。

+0

ありがとうございました。私もこれを実現しました。残念ながら、私は、クエリフォームのポストからいくつかのパラメタを与えられたExcelシートを作成しなければなりません。そのため、私は潜在的に非常に多くの行を吐き出さなければなりません。 – cs0815

関連する問題