2012-05-08 7 views
4

저는 .net 응용 프로그램 중 하나에서 Solr 검색을 구현했습니다. Solr의 검색 기능을 사용하려고 할 때를 제외하고는 모두 정상적으로 작동하지만 10 개의 결과 만 반환하고 100 개가 넘는 문서는 색인으로 생성됩니다. 누구든지이 문제를 어떻게 해결할 수 있습니까? 보여Solr 쿼리가 항상 처음 10 행을 반환합니다.

예는 다음 :

http://117.55.242.204:8983/solr/select/?q=10 행 복귀 & & 시작 = 0 = 10 행

.

http://117.55.242.204:8983/solr/select/?q=. startrows : & 시작 = 20 & 행 =

(30)가 0 행을 반환하지만 numFound (10)

답변

2

로 설정되어, 당신은 SOLR 쿼리에 startrows 매개 변수를 전달해야합니다. SolrNet 클라이언트를 사용하여이를 용이하게하려면 응용 프로그램에서이 옵션을 쿼리 옵션으로 설정해야합니다. 다음은 SolrNet 용 Pagination section of the Querying documentation의 예제 코드입니다.

ISolrOperations<Product> solr = ... 
solr.Query("somequery", new QueryOptions{ 
    Start = 10, 
    Rows = 25 
}); 

그래서이 예에서 우리가 찾을 수 35 개 이상의 결과를 가정하고는 10 항목으로 시작하여 25 개 항목을 반환하도록 명시되어있다. 그러면 쿼리에서 찾은 전체 항목 중 10 ~ 35 개를 반환합니다.

3

을 보여주는 당신은 여기에 두 개의 변수에주의를 지불해야합니다. 첫 번째 경우

는 단지 rows 10. 제 경우 , ( start 20이고 rows = 10) (21) (30)를 통해 문서를 반환하려고하기 때문에 10 개 문서를 반환 만 10 매칭 존재한다 문서가 0을 반환합니다.

모든 문서가 반환되게하려면 rows을 1000 또는 10000과 같은 높은 값 또는 색인의 문서 수로 설정하십시오. @Ansari는 그의 대답에 명시된 바와 같이 당신이 페이징하지 않는 경우, 있는지 확인 start이 0

+0

그리드에 표시하고 구현 된 페이징을 사용해야하므로 인덱스를 바꿔야합니다. – Anu

+0

Solr 쿼리를 생성 할 때 그렇게해야합니다. 'start'와'rows' 변수의 합이'numFound'를 넘지 않도록하십시오. – Ansari

+0

예.하지만 80 명이 넘는 워드 프로세서가 있다면 이해할 수 없습니다. 그리고 내 쿼리 약 10 결과 thats 왜 numFound 10주고 있지만 일치하는 비어있는 응답 본문 지 않습니다 ... 0 0 *. * 30<결과 NAME = "응답"numFound = "10"으로 시작 = "20"이름> 20 Anu

1

나는 Ansari의 답변에 동의하지만 한가지 의견이 있습니다. 페이지 매김은 solr을 사용하는 자연스럽고 직관적 인 방법이기 때문에 행을 다소 어둡게 설정할 수는 없습니다.

성능이 현저한 조작 또는 논리적 조작 인 경우 모든 문서를 쉽게 반환 할 수 있습니다. 그러한 것이 존재하지 않는다는 사실은 큰 데이터 세트를 리턴하기보다는 짧은 반복적 인 페이지 매김이 가야한다는 것을 의미합니다.

관련 문제