2017-12-27 21 views
0

나는 다음과 같이 데이터베이스에서 100,000 메시지를 가져 오기 위해 구조화 된 쿼리를 사용하고 구조화 :Marklogic 쿼리 정의

sqb.and(
      sqb.word(sqb.jsonProperty(status.name), toBeReported.name), 
      sqb.word(sqb.jsonProperty(dataCategory.name), param.businessCategory), 
      sqb.range(sqb.jsonProperty(creationDate.name), marklogicDateFormat.name, Operator.LE, DateUtil.printFpmlDateTime(param.messagesTime))) 

다음의 optionsName을 사용하여에 정렬을 적용.

SVC-EXTIME: search-impl:apply-search($querydef) -- Time limit exceeded 

누군가가 구조화 된 쿼리에있는 필터링되지 않은이 검색하거나 검색하여 필터링하게 말해 주시겠습니까 :

내가 좋아하는 가끔 시간 초과 오류는 무엇입니까? 필터링되지 않은 검색을 위해 구조화 된 쿼리를 만들 수 있습니까?

답변

1

쿼리가 단일 요청으로 100k 개의 메시지를 모두 검색하려고합니까?

권장되는 접근 방식은 결과 요청을 페이징하여 각 요청에서 100 ~ 1,000 개의 문서 (스위트 스폿은 문서 크기 및 기타 요인에 따라 달라질 수 있음)를 얻고 각 응답 페이지를 동시에 처리하여 페이지를 참조하십시오.

도움이 되시길 바랍니다.

+0

1000 레코드의 배치에서 메시지를 가져옵니다. 그래서 약 50k 레코드를 가져온 후에이 예외가 발생합니다 – Kiras

+0

쿼리가 다중 명령문 트랜잭션 내에서 실행되고 있습니까? 그렇다면 더 나은 접근 방법은 특정 시점 쿼리를 실행하는 것입니다. 검색어뿐만 아니라 검색을 실행하는 코드를 제공하면 누군가가 더 유용한 제안을 제공 할 수 있습니다. – ehennum