private NodeTopDocs collectKeys(DocumentExtractor extractor) { TopDocs topDocs = extractor.getTopDocs(); Object[] keys = new Object[topDocs.scoreDocs.length]; KeyTransformationHandler keyTransformationHandler = KeyTransformationHandler .getInstance(cache.getAdvancedCache()); // collecting keys (it's a eager query!) for (int i = 0; i < topDocs.scoreDocs.length; i++) { keys[i] = QueryExtractorUtil.extractKey(extractor, cache, keyTransformationHandler, i); } return new NodeTopDocs(topDocs, keys); }
@Override QueryResponse perform() { HSQuery query = queryDefinition.getHsQuery(); query.afterDeserialise(getSearchFactory()); DocumentExtractor extractor = query.queryDocumentExtractor(); // registering... getQueryBox().put(queryId, extractor); // returning the QueryResponse TopDocs topDocs = extractor.getTopDocs(); return new QueryResponse(new NodeTopDocs(cache.getRpcManager().getAddress(), topDocs)); } }
private NodeTopDocs collectKeys(DocumentExtractor extractor, HSQuery query) { TopDocs topDocs = extractor.getTopDocs(); int topDocsLength = topDocs.scoreDocs.length; Object[] keys = null; Object[] projections = null; if (query.getProjectedFields() == null) { keys = new Object[topDocsLength]; // collecting keys (it's a eager query!) for (int i = 0; i < topDocsLength; i++) { keys[i] = extractKey(extractor, i); } } else { projections = new Object[topDocsLength]; try { for (int docIndex = 0; docIndex < topDocsLength; docIndex++) { projections[docIndex] = extractor.extract(docIndex).getProjection(); } } catch (IOException e) { throw new SearchException("Error while extracting projection", e); } } return new NodeTopDocs(cache.getRpcManager().getAddress(), topDocs, keys, projections); } }
@Override public QueryResponse perform() { query.afterDeserialise(getSearchFactory()); DocumentExtractor extractor = query.queryDocumentExtractor(); int resultSize = query.queryResultSize(); QueryBox box = getQueryBox(); // registering... box.put(lazyQueryId, extractor); // returning the QueryResponse TopDocs topDocs = extractor.getTopDocs(); QueryResponse queryResponse = new QueryResponse(new NodeTopDocs(topDocs), box.getMyId(), resultSize); queryResponse.setAddress(cache.getAdvancedCache().getRpcManager().getAddress()); return queryResponse; }