2011-01-12 3 views
1

RavenDB Lucene 인덱스에 대한 쿼리를 구현하고 결과를 페이징하려고합니다.Skip 및 Take와 함께 RavenDB 페이징이 작동하지 않습니다.

나는 다음과 같은 코드가 있습니다

 IDocumentQuery<Post> q = Session.Advanced.LuceneQuery<Post, Posts_Search>() 
      .WhereContains("BodyHtml", query) 
      .OrElse() 
      .WhereContains("Title", query) 
      .AddOrder("Published", true) 
      .Skip(4).Take(4); 

(건너 뛰기의 마지막 쌍을 간단한 예를 위해 추가 된 보라).

이 쿼리는 예상했던대로 4 개뿐만 아니라 내 쿼리와 일치하는 22 개의 문서를 모두 반환합니다.

내가 뭘 잘못하고 있니?

+0

쿼리에서 .ToString()을 호출하면 유선을 통해 전송되는 실제 문자열을 얻게됩니다. 쿼리의 목적은 무엇입니까? –

+0

@Matt, ToString()은 "BodyHtml : net OR Title : net"을 반환하고 Skip/Take를 적용하기 전후에이 작업을 수행합니다. Session.Query 에서 이렇게하면 페이징이 예상대로 작동합니다. 이것이 버그인지 궁금합니다. – driis

답변

2

(그런 다음 당신은 여전히 ​​처음 DB에서 모든 기록을 얻는 것주의, 건너 뛰고 가지고하는 객체 Linq에를 사용하는 것).

나는 최신 불안정한 빌드 (251)를 다운로드했으며이 빌드로 코드가 예상대로 작동합니다. 나는 그것이 사용하고있는 버전의 버그라고 생각한다. RavenDB 그룹에서 내 질문에 더 의미있는 통찰력을 얻을 수 있다면 여기에 게시 할 것입니다.

0

여기 RavenDB를 모르는 것으로 추측합니다. 그러나 Raven 공급자는 건너 뛰기 또는 가져 오기를 지원하지 않습니다.

.AddOrder를 확인한 후 IEnumerable로 변환 해보십시오. 이 문제는 최신 안정 빌드 (206)로 발생 된

... 
    .AddOrder("Published",True) 
    .AsEnumerable() 
    .Skip(4).Take(4); 
+0

설명서 및 예제에 따라 Skip and Take를 지원해야합니다. 그리고 실제로 서버에서 페이징이 필요합니다. – driis

+0

.AddOrder가 반환하는 것은 무엇입니까? 그것은 쿼리 가능 입니까? (.AsEnumerable()은 솔루션이 아니라 테스트라고 제안 했음) –

+1

Skip/Take가 지원됩니다. 그 부분을 작성했기 때문에 알 수 있습니다 .-) –

관련 문제