You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@lucenenet.apache.org by Christian Setzkorn <ch...@setzkorn.eu> on 2011/03/15 09:13:23 UTC

[Lucene.Net] lucene.net exception

Hi,

 

I have a method like this:

 

public IList<Bla> Query(string term, out int total, int page, int pageSize)

{

    if (term.ToString().Equals("") == false)

    {

                var parser = new
MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_29, new[] { "Query" },
new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29));

                Query query = parser.Parse(term);

 

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

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

                total = fullTextQuery.List<Bla>().Count();

                return fullTextQuery.List<Bla>().Skip((page - 1) *
pageSize).Take(pageSize).ToList<Bla>();

    }

    else

    {

                total = 0;

                return null;

    }

}

 

It is used by a front end which depicts a grid (hence parameters total,
page, pageSize). This all works fine (suggestions for improvements welcome).
Unfortunately the bit:

 

total = fullTextQuery.List<Bla>().Count();

 

seems to cause problems when the returned list of objects is quite large. I
get this exception:

 

The incoming tabular data stream (TDS) remote procedure call (RPC) protocol
stream is incorrect. Too many parameters were provided in this RPC request.
The maximum is 2100.

 

Here is the stacktrace:

 

at System.Data.SqlClient.SqlConnection.OnError(SqlException exception,
Boolean breakConnection)

at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException
exception, Boolean breakConnection)

at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()

at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand
cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet
bulkCopyHandler, TdsParserStateObject stateObj)

at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()

at System.Data.SqlClient.SqlDataReader.get_MetaData()

at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,
RunBehavior runBehavior, String resetOptionsString)

at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior
cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)

at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior
cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method,
DbAsyncResult result)

at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior
cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)

at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior,
String method)

at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior
behavior)

at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()

at NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand cmd)

at NHibernate.Loader.Loader.GetResultSet(IDbCommand st, Boolean
autoDiscoverTypes, Boolean callable, RowSelection selection,
ISessionImplementor session)

at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session,
QueryParameters queryParameters, Boolean returnProxies)

at
NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImpl
ementor session, QueryParameters queryParameters, Boolean returnProxies)

at NHibernate.Loader.Loader.DoList(ISessionImplementor session,
QueryParameters queryParameters)

 

Is there a way to overcome this?

 

Thanks.

 

Best wishes,

Christian




 


Re: [Lucene.Net] lucene.net exception

Posted by Christian Setzkorn <ch...@setzkorn.eu>.
Ok I have found a solution:

public IList<Bla> Query(string term, out int total, int page, int pageSize)
{
    if (term.ToString().Equals("") == false)
    {
	var parser = new
MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_29, new[] { "Query" },
new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29));
	Query query = parser.Parse(term);

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

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

	total = fullTextQuery.ResultSize;

	return fullTextQuery.SetFirstResult((page - 1) *
pageSize).SetMaxResults(pageSize).List< Bla >();                
    }
    else
    {
	total = 0;
	return null;
    }
}

It was NHibernate related so sorry about posting it here (might still be
useful for someone else).

Christian

-----Original Message-----
From: Christian Setzkorn [mailto:christian@setzkorn.eu] 
Sent: 15 March 2011 08:38
To: lucene-net-user@lucene.apache.org
Subject: [Spam] Re: [Lucene.Net] lucene.net exception

Thanks for the reply. Still lucene.net -> CreateFullTextQuery (or is it
NHibernate?) produces SQL code that contains too many characters. How would
you determine the total number of objects in my scenario? Also if I would
not restrict the number of returned objects using paging I would still have
the same problem. Please correct me if I am wrong. Thanks.

C

-----Original Message-----
From: digy digy [mailto:digydigy@gmail.com] 
Sent: 15 March 2011 08:32
To: lucene-net-user@lucene.apache.org
Subject: [Spam] Re: [Lucene.Net] lucene.net exception

There is nothing related with Lucene.Net in the stack trace.
It would be better to post your question to NHibernate maling list.

DIGY


On Tue, Mar 15, 2011 at 10:13 AM, Christian Setzkorn
<ch...@setzkorn.eu>wrote:

> Hi,
>
>
>
> I have a method like this:
>
>
>
> public IList<Bla> Query(string term, out int total, int page, int
pageSize)
>
> {
>
>    if (term.ToString().Equals("") == false)
>
>    {
>
>                var parser = new
> MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_29, new[] { "Query"
},
> new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29));
>
>                Query query = parser.Parse(term);
>
>
>
>                IFullTextSession session =
> Search.CreateFullTextSession(this.Session);
>
>                IQuery fullTextQuery = session.CreateFullTextQuery(query,
> new[] { typeof(Bla) });
>
>                total = fullTextQuery.List<Bla>().Count();
>
>                return fullTextQuery.List<Bla>().Skip((page - 1) *
> pageSize).Take(pageSize).ToList<Bla>();
>
>    }
>
>    else
>
>    {
>
>                total = 0;
>
>                return null;
>
>    }
>
> }
>
>
>
> It is used by a front end which depicts a grid (hence parameters total,
> page, pageSize). This all works fine (suggestions for improvements
> welcome).
> Unfortunately the bit:
>
>
>
> total = fullTextQuery.List<Bla>().Count();
>
>
>
> seems to cause problems when the returned list of objects is quite large.
I
> get this exception:
>
>
>
> The incoming tabular data stream (TDS) remote procedure call (RPC)
protocol
> stream is incorrect. Too many parameters were provided in this RPC
request.
> The maximum is 2100.
>
>
>
> Here is the stacktrace:
>
>
>
> at System.Data.SqlClient.SqlConnection.OnError(SqlException exception,
> Boolean breakConnection)
>
> at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException
> exception, Boolean breakConnection)
>
> at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
>
> at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand
> cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet
> bulkCopyHandler, TdsParserStateObject stateObj)
>
> at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
>
> at System.Data.SqlClient.SqlDataReader.get_MetaData()
>
> at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,
> RunBehavior runBehavior, String resetOptionsString)
>
> at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior
> cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
>
> at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior
> cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method,
> DbAsyncResult result)
>
> at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior
> cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
>
> at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior
behavior,
> String method)
>
> at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior
> behavior)
>
> at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
>
> at NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand cmd)
>
> at NHibernate.Loader.Loader.GetResultSet(IDbCommand st, Boolean
> autoDiscoverTypes, Boolean callable, RowSelection selection,
> ISessionImplementor session)
>
> at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session,
> QueryParameters queryParameters, Boolean returnProxies)
>
> at
>
>
NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImpl
> ementor session, QueryParameters queryParameters, Boolean returnProxies)
>
> at NHibernate.Loader.Loader.DoList(ISessionImplementor session,
> QueryParameters queryParameters)
>
>
>
> Is there a way to overcome this?
>
>
>
> Thanks.
>
>
>
> Best wishes,
>
> Christian
>
>
>
>
>
>
>


Re: [Lucene.Net] lucene.net exception

Posted by Christian Setzkorn <ch...@setzkorn.eu>.
Thanks for the reply. Still lucene.net -> CreateFullTextQuery (or is it
NHibernate?) produces SQL code that contains too many characters. How would
you determine the total number of objects in my scenario? Also if I would
not restrict the number of returned objects using paging I would still have
the same problem. Please correct me if I am wrong. Thanks.

C

-----Original Message-----
From: digy digy [mailto:digydigy@gmail.com] 
Sent: 15 March 2011 08:32
To: lucene-net-user@lucene.apache.org
Subject: [Spam] Re: [Lucene.Net] lucene.net exception

There is nothing related with Lucene.Net in the stack trace.
It would be better to post your question to NHibernate maling list.

DIGY


On Tue, Mar 15, 2011 at 10:13 AM, Christian Setzkorn
<ch...@setzkorn.eu>wrote:

> Hi,
>
>
>
> I have a method like this:
>
>
>
> public IList<Bla> Query(string term, out int total, int page, int
pageSize)
>
> {
>
>    if (term.ToString().Equals("") == false)
>
>    {
>
>                var parser = new
> MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_29, new[] { "Query"
},
> new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29));
>
>                Query query = parser.Parse(term);
>
>
>
>                IFullTextSession session =
> Search.CreateFullTextSession(this.Session);
>
>                IQuery fullTextQuery = session.CreateFullTextQuery(query,
> new[] { typeof(Bla) });
>
>                total = fullTextQuery.List<Bla>().Count();
>
>                return fullTextQuery.List<Bla>().Skip((page - 1) *
> pageSize).Take(pageSize).ToList<Bla>();
>
>    }
>
>    else
>
>    {
>
>                total = 0;
>
>                return null;
>
>    }
>
> }
>
>
>
> It is used by a front end which depicts a grid (hence parameters total,
> page, pageSize). This all works fine (suggestions for improvements
> welcome).
> Unfortunately the bit:
>
>
>
> total = fullTextQuery.List<Bla>().Count();
>
>
>
> seems to cause problems when the returned list of objects is quite large.
I
> get this exception:
>
>
>
> The incoming tabular data stream (TDS) remote procedure call (RPC)
protocol
> stream is incorrect. Too many parameters were provided in this RPC
request.
> The maximum is 2100.
>
>
>
> Here is the stacktrace:
>
>
>
> at System.Data.SqlClient.SqlConnection.OnError(SqlException exception,
> Boolean breakConnection)
>
> at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException
> exception, Boolean breakConnection)
>
> at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
>
> at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand
> cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet
> bulkCopyHandler, TdsParserStateObject stateObj)
>
> at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
>
> at System.Data.SqlClient.SqlDataReader.get_MetaData()
>
> at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,
> RunBehavior runBehavior, String resetOptionsString)
>
> at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior
> cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
>
> at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior
> cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method,
> DbAsyncResult result)
>
> at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior
> cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
>
> at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior
behavior,
> String method)
>
> at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior
> behavior)
>
> at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
>
> at NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand cmd)
>
> at NHibernate.Loader.Loader.GetResultSet(IDbCommand st, Boolean
> autoDiscoverTypes, Boolean callable, RowSelection selection,
> ISessionImplementor session)
>
> at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session,
> QueryParameters queryParameters, Boolean returnProxies)
>
> at
>
>
NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImpl
> ementor session, QueryParameters queryParameters, Boolean returnProxies)
>
> at NHibernate.Loader.Loader.DoList(ISessionImplementor session,
> QueryParameters queryParameters)
>
>
>
> Is there a way to overcome this?
>
>
>
> Thanks.
>
>
>
> Best wishes,
>
> Christian
>
>
>
>
>
>
>


Re: [Lucene.Net] lucene.net exception

Posted by digy digy <di...@gmail.com>.
There is nothing related with Lucene.Net in the stack trace.
It would be better to post your question to NHibernate maling list.

DIGY


On Tue, Mar 15, 2011 at 10:13 AM, Christian Setzkorn
<ch...@setzkorn.eu>wrote:

> Hi,
>
>
>
> I have a method like this:
>
>
>
> public IList<Bla> Query(string term, out int total, int page, int pageSize)
>
> {
>
>    if (term.ToString().Equals("") == false)
>
>    {
>
>                var parser = new
> MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_29, new[] { "Query" },
> new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_29));
>
>                Query query = parser.Parse(term);
>
>
>
>                IFullTextSession session =
> Search.CreateFullTextSession(this.Session);
>
>                IQuery fullTextQuery = session.CreateFullTextQuery(query,
> new[] { typeof(Bla) });
>
>                total = fullTextQuery.List<Bla>().Count();
>
>                return fullTextQuery.List<Bla>().Skip((page - 1) *
> pageSize).Take(pageSize).ToList<Bla>();
>
>    }
>
>    else
>
>    {
>
>                total = 0;
>
>                return null;
>
>    }
>
> }
>
>
>
> It is used by a front end which depicts a grid (hence parameters total,
> page, pageSize). This all works fine (suggestions for improvements
> welcome).
> Unfortunately the bit:
>
>
>
> total = fullTextQuery.List<Bla>().Count();
>
>
>
> seems to cause problems when the returned list of objects is quite large. I
> get this exception:
>
>
>
> The incoming tabular data stream (TDS) remote procedure call (RPC) protocol
> stream is incorrect. Too many parameters were provided in this RPC request.
> The maximum is 2100.
>
>
>
> Here is the stacktrace:
>
>
>
> at System.Data.SqlClient.SqlConnection.OnError(SqlException exception,
> Boolean breakConnection)
>
> at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException
> exception, Boolean breakConnection)
>
> at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
>
> at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand
> cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet
> bulkCopyHandler, TdsParserStateObject stateObj)
>
> at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
>
> at System.Data.SqlClient.SqlDataReader.get_MetaData()
>
> at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds,
> RunBehavior runBehavior, String resetOptionsString)
>
> at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior
> cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
>
> at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior
> cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method,
> DbAsyncResult result)
>
> at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior
> cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
>
> at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior,
> String method)
>
> at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior
> behavior)
>
> at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader()
>
> at NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand cmd)
>
> at NHibernate.Loader.Loader.GetResultSet(IDbCommand st, Boolean
> autoDiscoverTypes, Boolean callable, RowSelection selection,
> ISessionImplementor session)
>
> at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session,
> QueryParameters queryParameters, Boolean returnProxies)
>
> at
>
> NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImpl
> ementor session, QueryParameters queryParameters, Boolean returnProxies)
>
> at NHibernate.Loader.Loader.DoList(ISessionImplementor session,
> QueryParameters queryParameters)
>
>
>
> Is there a way to overcome this?
>
>
>
> Thanks.
>
>
>
> Best wishes,
>
> Christian
>
>
>
>
>
>
>