コード例 #1
0
ファイル: Search.java プロジェクト: srnsw/xena
  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());
  }