Beispiel #1
0
 public void startSearch(SearchQuery searchQuery) {
   //  fprintf(stderr, "startSearch: setup\n");
   int i, j;
   // set up ConceptData lists
   // order search terms
   quicksort(0, _free2 - 1);
   // remove duplicates
   for (i = 0; i < _free2 - 1; i = j)
     for (j = i + 1; j < _free2; j++)
       if (_conceptData[i].crqEquals(_conceptData[j])) _conceptData[j] = null;
       else i = j;
   // create lists
   for (i = 0; i < _free2 - 1; i = j)
     for (j = i + 1; j < _free2; j++)
       if (_conceptData[j] != null)
         if (_conceptData[i].cEquals(_conceptData[j])) {
           _conceptData[i].addLast(_conceptData[j]);
           _conceptData[j] = null;
         } else i = j;
   // densify
   for (i = 0; i < _free2 - 1; i++)
     if (_conceptData[i] == null)
       for (j = i + 1; j < _free2; j++)
         if (_conceptData[j] != null) {
           _conceptData[i] = _conceptData[j];
           _conceptData[j] = null;
           break;
         }
   // set up new document generators
   _nextDocGenHeap.reset();
   for (i = 0; i < _free2 && _conceptData[i] != null; i++) {
     NextDocGenerator gen = new NextDocGenerator(_conceptData[i], _env);
     try {
       gen.first();
       if (gen.getDocument() != NonnegativeIntegerGenerator.END) {
         _conceptData[i].setConceptLength(_env.getConceptLength(_conceptData[i].getConcept()));
         _nextDocGenHeap.addGenerator(gen);
       }
     } catch (Exception e) {
       e.printStackTrace();
     }
   }
   _nextDocGenHeap.start();
   searchDocument();
   if (searchQuery == null) {
     printResults(_maxHitsToShow);
   } else {
     _query[0].makeEvent(_maxHitsToShow, searchQuery);
   }
 }