@Override public QueryResponse perform() { query.afterDeserialise(getSearchFactory()); DocumentExtractor extractor = query.queryDocumentExtractor(); try { int resultSize = query.queryResultSize(); QueryResponse queryResponse = new QueryResponse(resultSize); return queryResponse; } finally { extractor.close(); } }
@Override QueryResponse perform() { HSQuery query = queryDefinition.getHsQuery(); query.afterDeserialise(getSearchFactory()); try (DocumentExtractor ignored = query.queryDocumentExtractor()) { int resultSize = query.queryResultSize(); return new QueryResponse(resultSize); } } }
@Override QueryResponse perform() { HSQuery query = queryDefinition.getHsQuery(); query.afterDeserialise(getSearchFactory()); try (DocumentExtractor extractor = query.queryDocumentExtractor()) { int resultSize = query.queryResultSize(); return resultSize == 0 ? new QueryResponse(0) : new QueryResponse(collectKeys(extractor, query)); } }
@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)); } }
@Override public QueryResponse perform() { query.afterDeserialise(getSearchFactory()); DocumentExtractor extractor = query.queryDocumentExtractor(); try { int resultSize = query.queryResultSize(); NodeTopDocs eagerTopDocs = resultSize == 0 ? null : collectKeys(extractor); QueryResponse queryResponse = new QueryResponse(eagerTopDocs, getQueryBox().getMyId(), resultSize); queryResponse.setAddress(cache.getAdvancedCache().getRpcManager().getAddress()); return queryResponse; } finally { extractor.close(); } }
@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; }
@Test public void serializeDeserializeLuceneHSQuery() throws ClassNotFoundException, IOException { final ExtendedSearchIntegrator integrator = sfHolder.getSearchFactory(); Book book = new Book(); book.title = "Java Serialization"; book.text = "The black art of object serialization is full of pitfalls even for experienced developers"; helper.add( book ); QueryBuilder queryBuilder = integrator.buildQueryBuilder().forEntity( Book.class ).get(); Query luceneQuery = queryBuilder.keyword().onField( "text" ).matching( "art" ).createQuery(); HSQuery hsQuery = integrator.createHSQuery( luceneQuery, Book.class ); //Lucene Queries are not serializable: who's using LuceneHSQuery will need to //encode the query separately and set it again. hsQuery.luceneQuery( null ); HSQuery clonedQuery = SerializationTestHelper.duplicateBySerialization( hsQuery ); clonedQuery.afterDeserialise( integrator ); clonedQuery.luceneQuery( luceneQuery ); List<EntityInfo> result = clonedQuery.queryEntityInfos(); Assert.assertEquals( 1, result.size() ); }