此代码可以正常工作:
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抛出异常。一种有效的解决方案是使用相当慢的分页来获取所有对象。有更好的解决方案吗?
感谢。
C
答案 0 :(得分:0)
如果我没记错的话,fullTextQuery.List()会做一个大的
select ... where ID_COL IN ( id1, id2, id3, id4 ... )
其中id1,id2 ...是参数,在SQL Server中该数量是有限的。这样,您就可以从lucene文档中获得NHibernate实体。长话短说,除了分页之外没有解决方法。
如果你真的需要获取这么多数据,你可以使用1000个元素的页面大小。
获取1000个实体在某个地方会很慢:当你在屏幕上显示它们时,例如。