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