검색 소스 결과 페이지 매김

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 읽기4분
  • 검색 소스가 한 번에 표시하는 결과 수를 제한하여 성능을 향상시킵니다. 최종 사용자는 필요에 따라 더 많은 결과를 로드할 수 있습니다.

    시작하기 전에

    필요한 역할: admin 또는 sp_admin

    이 태스크 정보

    단순 검색 소스에 페이지 매김을 추가하는 경우 검색 소스 기록의 페이지 매김 결과를 true로 설정합니다. 그러나 고급 검색 소스에 페이지 매김을 추가하는 경우 여러 페이지의 결과를 처리하도록 데이터 가져오기 스크립트도 수정해야 합니다. 사용자가 더 많은 검색 결과를 로드하면 검색 소스에서 데이터 가져오기 스크립트를 다시 실행합니다.
    주:
    고급 패싯을 사용하여 검색 소스를 페이지 매김하는 경우 각 페이지의 결과에 따라 패싯을 로드하도록 패싯 작성 스크립트를 수정하지 마십시오. 패싯을 사용하면 최종 사용자가 페이지별 결과가 아닌 전체 결과 집합에서 결과를 필터링할 수 있어야 합니다.

    프로시저

    1. 플랫폼 UI에서 서비스 포털 > 검색 소스.
    2. 페이지 매김을 추가할 검색 소스를 엽니다.
    3. 데이터 소스 탭에서 페이지 매김 결과를 true로 설정합니다.
      이 필드를 활성화하면 검색 결과 페이지에 더 많은 결과 로드 버튼이 추가됩니다. 이 플래그는 단순 검색 소스에 대한 페이지 매김을 자동으로 사용합니다.
    4. 옵션: 검색 소스가 고급인 경우 여러 검색 결과 페이지를 처리하도록 데이터 가져오기 스크립트를 수정합니다.
      검색 소스의 범위에 따라 다음 GlideRecord API 중 하나를 사용하여 데이터 가져오기 스크립트를 업데이트합니다.
      범위 방법
      전역 GlideRecord의 setLocation() - 전역
      범위가 지정된 애플리케이션 GlideRecord의 chooseWindow() - 범위 지정

      다음은 인시던트 테이블을 쿼리하고 결과를 페이지 매김하는 전역 검색 소스에 대한 데이터 가져오기 스크립트의 예입니다.

      // queryLocation is a special value injected into the script,
      // which holds the query_location property of the last item
      // in the previously fetched result set
      (function(query, queryLocation, count) {
      	var results = [];
      	var now_GR = new GlideRecord("incident");
      	gr.addQuery("123TEXTQUERY321", query);
      	gr.query();
      	// Here, we are utilizing queryLocation to implement pagination.
      	// In practice, there are many other ways to use the
      	// query_location value of the last item in the previous
      	// result set to implement pagination. Your implementation
      	// will vary by use case.
      	gr.setLocation(queryLocation - 1);
      
      	var resultCount = 0;
      	while(gr.next() && resultCount < count + 1) {
      		results.push({
      			label: gr.getDisplayValue(),
      			short_description: gr.getValue("short_description"),
      			// Here, we are populating the query_location
      			// property of each result item. This is how the
      			// framework knows what value to pass into the
      			// next fetched search result script execution
      			query_location: gr.getLocation(),
      			primary: gr.getDisplayValue(),
      			state: gr.getDisplayValue("state")
      		});
      		resultCount++;
      	}
      
      	if (results.length == 0)
      		return results;
      
      	if(results.length > count) {
      		results.pop();
      	} else {
      		// In order to indicate that a result in the result
      		// set is the final result (that there are
      		// no more results to be fetched), add this property
      		// to the final element in your result set.
      		results[results.length - 1].isLastResult = true;
      	}
      	return results;
      })(query, queryLocation, count, facets);

      또 다른 예는 지식베이스 검색 소스를 참조하십시오.

    5. 검색 페이지 위젯 또는 패싯이 적용된 검색 위젯 인스턴스 옵션에서 검색 소스에 대한 쿼리당 최대 결과 수를 정의합니다.

    결과

    검색 페이지는 한 번에 정의된 수의 결과만 반환합니다. 사용자가 더 많은 결과 로드를 선택하면 검색 소스가 쿼리 또는 데이터 가져오기 스크립트를 다시 실행합니다.

    페이지 매김된 결과