0

此代码工作正常:

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

4

1 回答 1

0

如果我没记错的话,fullTextQuery.List() 有很大的作用

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

其中 id1, id2 ... 是参数,在 SQL Server 中是有限的。这样,您就可以从 lucene 文档中获取 NHibernate 实体。长话短说,除了分页之外,没有其他解决方法。

如果您真的需要获取这么多数据,您可以使用 1000 个元素的页面大小。

在某处获得 1000 个实体会很慢:例如,当您在屏幕上显示它们时。

于 2011-04-01T21:11:04.990 回答