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()); }