2011-05-05 6 views
0

무료 텍스트 검색을 위해 프로젝트에서 NHibernate.Search 라이브러리를 사용하고 있습니다. 최근에 2100 개 이상의 결과가 나오기 시작하면서 SQL Server에서 최대 매개 변수 길이 오류가 발생하기 시작했습니다.NHibernate.Search - SQL Server 2005 - 최대 매개 변수 제한 2100 돌파!

NHibernate.Search는 그런 상황을 처리합니까? 모든 해결 방법은 없습니까?

답변

0

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 - exception if there are too may objects