Мне лично нравится генерировать полный поиск, а затем анализировать его оттуда:
Я использую эту функцию с любым объектом поиска, чтобы скомпилировать результаты в блоках по 1000:
function getAllResults(s) {
var results = s.run();
var searchResults = [];
var searchid = 0;
do {
var resultslice = results.getRange({start:searchid,end:searchid+1000});
resultslice.forEach(function(slice) {
searchResults.push(slice);
searchid++;
}
);
} while (resultslice.length >=1000);
return searchResults;
}
Тогда, когда я хочу обработать любой поиск, например:
var mySearch = search.create({
type:'invoice',
columns: [
{name: 'tranid'},
{name: 'trandate'},
{name: 'entity', sort: (params.consolidated)?search.Sort.ASC:undefined },
{name: 'parent',join:'customer', sort: (!params.consolidated)?search.Sort.ASC:undefined},
{name: 'terms'},
{name: 'currency'},
{name: 'amount'},
{name: 'amountremaining'},
{name: 'fxamount'},
{name: 'fxamountremaining'},
],
filters: [
{name: 'mainline', operator:'is',values:['T']},
{name: 'trandate', operator:'onorbefore', values: [params.startDate] }
]
});
var myResults = getAllResults(mySearch );
myResults.forEach(function(result) {
//... do stuff with each result
});
Я использовал это с хорошими результатами для наборов данных, превышающих 20 000 записей.