2012-07-16 3 views
0

야외에서 문서를 나열하고 검색하는 응용 프로그램을 작성 중입니다. 문제는 야외 광고가 쿼리 당 최대 5000 개의 레코드를 반환 할 수 있다는 것입니다. 야외 응용 프로그램에서 페이지 매김을 구현하는 방법이 있다면 응용 프로그램에서 모든 문서를 나열하지 않아도되므로 야외에서 페이지 당 X 결과 만 반환합니다. 나는 Alfresco 4 엔터프라이즈 에디션을 사용하고 있습니다.야외에서 페이지 매기기

도움이나 제안 바랍니다.

업데이트 (예) 나는 쿼리를 실행하고 모든 문서가 조건을 충족시키는 웹 스크립트를 작성했습니다. 5000 개의 항목이 있습니다. 웹 스크립트가 첫 번째 페이지에 대해 100 개의 문서를 반환하고 다음 페이지에 두 번째 페이지를 100 개 반환하는 방식으로 내 웹 스크립트를 수정하고 싶습니다.

Limit BY 및 OFFSET 키워드 사용과 비슷합니다. like this

+0

어디에서이 페이지 매김을 원합니까? API 또는 UI의 비트? 그렇다면 어느 것입니까? (대부분의 Alfresco는 이미 페이지 매김을 지원하므로 문제가있을 경우 구체적으로 설명해야합니다.) – Gagravarr

+0

질문을 업데이트했습니다. 잘하면 이건 분명합니다 – SaQiB

+0

그래도 무슨 쿼리? 어떤 서비스를 부르셨습니까? – Gagravarr

답변

1

SearchService (selectNodes/selectProperties 호출 제외)에서 쿼리하는 방법은 두 가지가 있습니다. 한 가지 방법은 쿼리 방법에 specify all your arguments directly입니다. 이것은 간결한 장점이 있지만 단점은 모든 옵션을 얻지 못한다는 것입니다.

또는 querySearchParameters 개체를 사용할 수 있습니다. 이를 통해 간단한 쿼리가하는 모든 작업을 수행 할 수 있습니다. 그 중 setLimit, setSkipCount 및 setMaxItems가 포함되어있어 페이징을 할 수 있습니다.

쿼리가 같은 것으로 사용하는 경우 :

searchService.query(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE, "lucene", myQuery); 

을 같이 당신이 대신 일을 할 것입니다 : 당신이 search.query() 기능을 사용할 수 있습니다 자바 스크립트에 webscript을 쓴 가정

SearchParameters sp = new SearchParameters(); 
sp.addStore(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE); 
sp.setLanguage("lucene"); 
sp.setQuery(myQuery); 
sp.setMaxItems(100); 
sp.setSkipCount(900); 
searchService.query(sp); 
+0

Nice, Thanks for now ... 한가지, 페이징을하고 있다면 결과는 위의 매개 변수를 설정하여 검색하고 건너 뛸 수 있지만 어쨌든 검색 쿼리의 레코드 수를 계산할 수 있습니다. 총 페이지 수를 추정하는 데 도움이됩니다. (카운트가 충분하고 효율적이라고 생각합니다.) – SaQiB

1

및 아래와 같이 검색 정의에 페이지 속성을 추가하십시오.

var sort1 = { 
    column: "@{http://www.alfresco.org/model/content/1.0}modified", 
    ascending: false 
}; 

var sort2 = { 
    column: "@{http://www.alfresco.org/model/content/1.0}created", 
    ascending: false 
}; 

var paging = { 
    maxItems: 100, 
    skipCount: 0 
}; 

var def = { 
    query: "cm:name:test*", 
    store: "workspace://SpacesStore", 
    language: "fts-alfresco", 
    sort: [sort1, sort2], 
    page: paging 
}; 

var results = search.query(def); 

여기에서 자세한 정보를 찾을 수 있습니다 : http://wiki.alfresco.com/wiki/4.0_JavaScript_API#Search_API