@@ -277,6 +277,80 @@ public final void close() {}
277277 *
278278 * @opensearch.internal
279279 */
280+ public class LongTermsResults extends StandardTermsResultStrategy <LongTerms , LongTerms .Bucket > {
281+ public LongTermsResults (boolean showTermDocCountError ) {
282+ super (showTermDocCountError );
283+ }
284+
285+ @ Override
286+ String describe () {
287+ return "stream_long_terms" ;
288+ }
289+
290+ @ Override
291+ SortedNumericDocValues getValues (LeafReaderContext ctx ) throws IOException {
292+ return valuesSource .longValues (ctx );
293+ }
294+
295+ @ Override
296+ LongTerms .Bucket [][] buildTopBucketsPerOrd (int size ) {
297+ return new LongTerms .Bucket [size ][];
298+ }
299+
300+ @ Override
301+ LongTerms .Bucket [] buildBuckets (int size ) {
302+ return new LongTerms .Bucket [size ];
303+ }
304+
305+ @ Override
306+ LongTerms buildResult (long owningBucketOrd , long otherDocCount , LongTerms .Bucket [] topBuckets ) {
307+ final BucketOrder reduceOrder ;
308+ if (isKeyOrder (order ) == false ) {
309+ reduceOrder = InternalOrder .key (true );
310+ Arrays .sort (topBuckets , reduceOrder .comparator ());
311+ } else {
312+ reduceOrder = order ;
313+ }
314+ return new LongTerms (
315+ name ,
316+ reduceOrder ,
317+ order ,
318+ metadata (),
319+ format ,
320+ bucketCountThresholds .getShardSize (),
321+ showTermDocCountError ,
322+ otherDocCount ,
323+ List .of (topBuckets ),
324+ 0 ,
325+ bucketCountThresholds
326+ );
327+ }
328+
329+ @ Override
330+ LongTerms buildEmptyResult () {
331+ return new LongTerms (
332+ name ,
333+ order ,
334+ order ,
335+ metadata (),
336+ format ,
337+ bucketCountThresholds .getShardSize (),
338+ showTermDocCountError ,
339+ 0 ,
340+ emptyList (),
341+ 0 ,
342+ bucketCountThresholds
343+ );
344+ }
345+
346+ @ Override
347+ LongTerms .Bucket buildFinalBucket (LongKeyedBucketOrds .BucketOrdsEnum ordsEnum , long docCount , long owningBucketOrd ) {
348+ LongTerms .Bucket result = new LongTerms .Bucket (ordsEnum .value (), docCount , null , showTermDocCountError , 0 , format );
349+ result .bucketOrd = ordsEnum .ord ();
350+ result .setDocCountError (0 );
351+ return result ;
352+ }
353+ }
280354
281355 /**
282356 * DoubleTermsResults for numeric terms
0 commit comments