/** * Verify that a query returns the expected map of key-value. Ordering is ignored. */ public static <K> void verifyQueryKeyAndValues(LuceneQuery<K, Object> query, HashMap expectedResults) throws LuceneQueryException { HashMap actualResults = new HashMap<>(); final PageableLuceneQueryResults<K, Object> results = query.findPages(); while (results.hasNext()) { results.next().stream().forEach(struct -> { Object value = struct.getValue(); actualResults.put(struct.getKey(), value); }); } assertEquals(expectedResults, actualResults); }
@Override public Collection<V> findValues() throws LuceneQueryException { final List<LuceneResultStruct<K, V>> page = findResults(); return page.stream().map(entry -> entry.getValue()).collect(Collectors.toList()); }
@Test public void shouldInvokeLuceneFunctionWithCorrectArguments() throws Exception { addValueToResults(); PageableLuceneQueryResults<Object, Object> results = query.findPages(); verify(execution).execute(eq(LuceneQueryFunction.ID)); ArgumentCaptor<LuceneFunctionContext> captor = ArgumentCaptor.forClass(LuceneFunctionContext.class); verify(execution).setArguments(captor.capture()); LuceneFunctionContext context = captor.getValue(); assertEquals(LIMIT, context.getLimit()); assertEquals(provider, context.getQueryProvider()); assertEquals("index", context.getIndexName()); assertEquals(5, results.getMaxScore(), 0.01); assertEquals(1, results.size()); final List<LuceneResultStruct<Object, Object>> page = results.next(); assertEquals(1, page.size()); LuceneResultStruct element = page.iterator().next(); assertEquals("hi", element.getKey()); assertEquals("value", element.getValue()); assertEquals(5, element.getScore(), 0.01); }
public <T, K, V> T project(LuceneResultStruct<K, V> source, Class<T> projectionType) { return project(source.getValue(), projectionType); }
public <T, K, V> T project(LuceneResultStruct<K, V> source, Class<T> projectionType) { return project(source.getValue(), projectionType); }