検索ソースが一度に表示する結果の数を制限して、パフォーマンスを向上させます。エンドユーザーは、必要に応じてさらに多くの結果を読み込むことができます。
始める前に
必要なロール:admin または sp_admin
このタスクについて
シンプルな検索ソースにページネーションを追加する場合は、検索ソース レコードの [結果をページネーション] を true に設定します。ただし、詳細な検索ソースにページネーションを追加する場合は、結果の複数のページを処理するためにデータ フェッチ スクリプトも変更する必要があります。ユーザーがさらに検索結果をロードすると、検索ソースはデータ フェッチ スクリプトを再実行します。注: 高度なファセットを使用して検索ソースをページネーションする場合は、各ページの結果に基づいてファセットをロードするようにファセット生成スクリプトを変更しないでください。ファセットを使用すると、エンド ユーザーはページ固有の結果ではなく、結果セット全体の結果をフィルタリングできます。
手順
-
プラットフォーム UI で、 .
-
検索ソースを開いてページネーションを追加します。
-
[データソース] タブで、[結果をページネーション (Paginate results)] を true に設定します。
このフィールドを有効にすると、[結果をさらにロード] ボタンが検索結果ページに追加されます。このフラグにより、シンプルな検索ソースのページネーションが自動的に有効になります。
- オプション:
検索ソースが詳細な場合は、複数の検索結果ページを処理するようにデータ フェッチ スクリプトを変更します。
検索ソースのスコープに応じて、次の 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);
追加の例については、ナレッジベースの検索ソースを参照してください。
-
検索ページ ウィジェットまたはファセット検索ウィジェット インスタンス オプションで、検索ソースのクエリごとの結果の最大数を定義します。
タスクの結果
検索ページは、定義された数の結果のみを一度に返します。ユーザーが [結果をさらにロード] を選択すると、検索ソースがクエリまたはデータ フェッチ スクリプトを再実行します。 