Beispiel #1
0
  private void searchDocument() {
    RoleFiller[] start = new RoleFiller[_nQueries];
    do {
      try {
        switch (nextDocument(start)) {
          case 0: // multi group
            _genHeap.start(start);
            while (_genHeap.next(start)) ;
            break;

          case 1: // single group
            if (_firstGenerator.next()) {
              _firstGenerator.generateFillers(start);
              while (_firstGenerator.next()) _firstGenerator.generateFillers(start);
            }
            break;

          case 2: // reached the end
            return;
        }
      } catch (Exception e) {
        e.printStackTrace(System.err);
        continue;
      }

      for (int i = 0; i < _nQueries; i++) {
        RoleFiller next;
        if ((next = start[i]) != null && next != RoleFiller.STOP)
          next.scoreList(_query[i], _document);
      }
      _genHeap.reset();
    } while (_nextDocGenHeap.isNonEmpty());
  }
Beispiel #2
0
  private ConceptGroupGenerator makeGenerator(int group) throws Exception {
    int shift, index;

    if (group > 0) {
      index = _base + _offsets.at(group - 1);
      shift = _maxConcepts.at(group - 1);
    } else {
      index = _base;
      shift = 0;
    }

    // initialize generator
    ConceptGroupGenerator gen = new ConceptGroupGenerator(_data, index, _kTable.at(2 * group + 1));
    // decode concept table
    _nConcepts = gen.decodeConcepts(_kTable.at(2 * group), shift, _concepts);
    if (group < _limit) _max = _concepts[_nConcepts] = _maxConcepts.at(group);
    else _max = _concepts[_nConcepts - 1];
    _genHeap.addGenerator(gen);
    _startingIndex = 0; // in _concepts; lower search index
    return gen;
  }