NHibernate.Search - SQL Server 2005 - 达到最大参数限制 2100!

发布于 2024-11-05 07:50:38 字数 142 浏览 1 评论 0原文

我在项目中使用 NHibernate.Search 库进行自由文本搜索。最近,当我开始获得超过 2100 个结果时,我开始从 SQL Server 收到最大参数长度错误。

NHibernate.Search 是否可以处理这种情况?有人有什么解决办法吗?

I am using NHibernate.Search libraries in my project for free text search. Recently when I started getting more than 2100 results, I started getting max parameter length error from SQL Server.

Does NHibernate.Search take care of such situation ? Any workaround anyone ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

时间你老了 2024-11-12 07:50:38

您可以修改 NHibernate.Search 代码来解决此问题,或者使用自定义分页,IE 获取搜索的命中数,然后相应地对 nhibernate 搜索结果进行分页。

public IList<TEntity> Search<TEntity>(Query query, bool? active, string orderBy)
{
    var search = NHibernate.Search.Search.CreateFullTextSession(this.session);

    var total = search.CreateFullTextQuery(query, typeof(TEntity)).ResultSize;

    var first = 0;

    var l = new List<TEntity>();

    while (total > 0)
    {
        l.AddRange(search.CreateFullTextQuery(query, typeof(TEntity))
                .SetFirstResult(first)
                .SetMaxResults(1000)
                .List<TEntity>());

        first += 1000;
        total -= 1000;
    }

    return l;
}

请参阅:IFullTextQuery - 如果对象太多则异常

You could modify NHibernate.Search code to take care of this, or, use custom paging, IE get number of hits for your search, then page nhibernate search results accordingly.

public IList<TEntity> Search<TEntity>(Query query, bool? active, string orderBy)
{
    var search = NHibernate.Search.Search.CreateFullTextSession(this.session);

    var total = search.CreateFullTextQuery(query, typeof(TEntity)).ResultSize;

    var first = 0;

    var l = new List<TEntity>();

    while (total > 0)
    {
        l.AddRange(search.CreateFullTextQuery(query, typeof(TEntity))
                .SetFirstResult(first)
                .SetMaxResults(1000)
                .List<TEntity>());

        first += 1000;
        total -= 1000;
    }

    return l;
}

See : IFullTextQuery - exception if there are too may objects

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文