amironov73

ReadAllTerms

Jun 14th, 2021
437
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Diagnostics;
  4. using System.Linq;
  5.  
  6. using ManagedIrbis;
  7. using ManagedIrbis.Search;
  8.  
  9. class Program
  10. {
  11.     private static string connectionString = "user=librarian;password=secret;";
  12.    
  13.     public static TermInfo[] ReadAllTerms
  14.         (
  15.             IIrbisConnection connection,
  16.             string prefix
  17.         )
  18.     {
  19.         var list = new List<TermInfo>();
  20.         var startTerm = prefix;
  21.  
  22.         var flag = true;
  23.         while (flag)
  24.         {
  25.             var parameters = new TermParameters
  26.             {
  27.                 Database = connection.Database,
  28.                 StartTerm = startTerm,
  29.                 NumberOfTerms = 10000
  30.             };
  31.             var terms = connection.ReadTerms(parameters);
  32.             if (terms.Length == 0)
  33.             {
  34.                 break;
  35.             }
  36.  
  37.             foreach (var term in terms)
  38.             {
  39.                 if (!term.Text.StartsWith(prefix))
  40.                 {
  41.                     flag = false;
  42.                     break;
  43.                 }
  44.                 list.Add(term);
  45.             }
  46.  
  47.             startTerm = terms.Last().Text;
  48.         }
  49.  
  50.         var result = TermInfo.TrimPrefix(list.ToArray(), prefix);
  51.  
  52.         return result;
  53.     }
  54.    
  55.     public static void Main()
  56.     {
  57.         var stopwatch = new Stopwatch();
  58.         stopwatch.Start();
  59.        
  60.         using (var connection = new IrbisConnection(connectionString))
  61.         {
  62.             var terms = ReadAllTerms(connection, "T=");
  63.             Console.WriteLine("Found: {0}", terms.Length);
  64.         }
  65.        
  66.         stopwatch.Stop();
  67.         Console.WriteLine("Time elapsed: {0} minute(s)", stopwatch.Elapsed.TotalMinutes);
  68.     }
  69. }
RAW Paste Data