@Test(expectedExceptions = SearchException.class, expectedExceptionsMessageRegExp = "Unable to find field notes in org.infinispan.query.dsl.embedded.testdomain.hsearch.UserHS") public void testBuildLuceneQueryOnNonIndexedField() { IckleParsingResult<Class<?>> parsingResult = IckleParser.parse("select notes from org.infinispan.query.dsl.embedded.testdomain.hsearch.UserHS where notes like 'TBD%'", qe.propertyHelper); CacheQuery<?> q = qe.buildLuceneQuery(parsingResult, null, -1, -1); }
@Test(enabled = false, description = "Disabled due to https://issues.jboss.org/browse/ISPN-8564") public void testSimpleProjection2() { IckleParsingResult<Class<?>> parsingResult = IckleParser.parse("select author.name from org.infinispan.query.dsl.embedded.testdomain.Book", qe.propertyHelper); CacheQuery q = qe.buildLuceneQuery(parsingResult, null, -1, -1); List<?> list = q.list(); assertEquals(3, list.size()); }
public void testSimpleProjection1() { IckleParsingResult<Class<?>> parsingResult = IckleParser.parse("select b.author.name from org.infinispan.query.dsl.embedded.testdomain.Book b", qe.propertyHelper); CacheQuery q = qe.buildLuceneQuery(parsingResult, null, -1, -1); List<?> list = q.list(); assertEquals(3, list.size()); }
public void testBooleanComparison() { IckleParsingResult<Class<?>> parsingResult = IckleParser.parse("from org.infinispan.query.dsl.embedded.testdomain.hsearch.TransactionHS " + "WHERE isDebit = false", qe.propertyHelper); CacheQuery q = qe.buildLuceneQuery(parsingResult, null, -1, -1); List<?> list = q.list(); assertEquals(1, list.size()); }
public void testConstantBooleanExpression() { IckleParsingResult<Class<?>> parsingResult = IckleParser.parse("from org.infinispan.query.dsl.embedded.testdomain.hsearch.TransactionHS " + "WHERE true", qe.propertyHelper); CacheQuery q = qe.buildLuceneQuery(parsingResult, null, -1, -1); List<?> list = q.list(); assertEquals(56, list.size()); parsingResult = IckleParser.parse("from org.infinispan.query.dsl.embedded.testdomain.hsearch.TransactionHS " + "WHERE false", qe.propertyHelper); q = qe.buildLuceneQuery(parsingResult, null, -1, -1); list = q.list(); assertEquals(0, list.size()); }
public void testFullTextKeyword() { IckleParsingResult<Class<?>> parsingResult = IckleParser.parse("from org.infinispan.query.dsl.embedded.testdomain.Book b " + "where b.preface:('java se'^7 -('bicycle' 'ski')) and b.publisher:'Oracel'~2", qe.propertyHelper); CacheQuery q = qe.buildLuceneQuery(parsingResult, null, -1, -1); List<?> list = q.list(); assertEquals(1, list.size()); } }
public void testBuildLuceneQuery() { IckleParsingResult<Class<?>> parsingResult = IckleParser.parse("select name from org.infinispan.query.dsl.embedded.testdomain.hsearch.UserHS", qe.propertyHelper); CacheQuery<UserHS> q = qe.buildLuceneQuery(parsingResult, null, -1, -1); List<?> list = q.list(); assertEquals(3, list.size()); }
@Override public FilterSubscription registerFilter(String queryString, Map<String, Object> namedParameters, FilterCallback callback, boolean isDeltaFilter, Object... eventType) { IckleParsingResult<TypeMetadata> parsingResult = IckleParser.parse(queryString, propertyHelper); disallowGroupingAndAggregations(parsingResult); disallowFullText(parsingResult); Map<TypeMetadata, FilterRegistry<TypeMetadata, AttributeMetadata, AttributeId>> filterMap = isDeltaFilter ? deltaFiltersByType : filtersByType; write.lock(); try { FilterRegistry<TypeMetadata, AttributeMetadata, AttributeId> filterRegistry = filterMap.get(parsingResult.getTargetEntityMetadata()); if (filterRegistry == null) { filterRegistry = new FilterRegistry<>(createMetadataAdapter(parsingResult.getTargetEntityMetadata()), true); filterMap.put(filterRegistry.getMetadataAdapter().getTypeMetadata(), filterRegistry); } return filterRegistry.addFilter(queryString, namedParameters, parsingResult.getWhereClause(), parsingResult.getProjections(), parsingResult.getProjectedTypes(), parsingResult.getSortFields(), callback, isDeltaFilter, eventType); } finally { write.unlock(); } }
@Override public ObjectFilter getObjectFilter(String queryString, List<FieldAccumulator> acc) { final IckleParsingResult<TypeMetadata> parsingResult = IckleParser.parse(queryString, propertyHelper); disallowGroupingAndAggregations(parsingResult); // if the query is a contradiction just return an ObjectFilter that rejects everything if (parsingResult.getWhereClause() == ConstantBooleanExpr.FALSE) { return new RejectObjectFilter<>(null, parsingResult); } final MetadataAdapter<TypeMetadata, AttributeMetadata, AttributeId> metadataAdapter = createMetadataAdapter(parsingResult.getTargetEntityMetadata()); // if the query is a tautology or there is no query at all and there is no sorting or projections just return a special instance that accepts anything // in case we have sorting and projections we cannot take this shortcut because the computation of projections or sort projections is a bit more involved if ((parsingResult.getWhereClause() == null || parsingResult.getWhereClause() == ConstantBooleanExpr.TRUE) && parsingResult.getSortFields() == null && parsingResult.getProjectedPaths() == null) { return new AcceptObjectFilter<>(null, this, metadataAdapter, parsingResult); } FieldAccumulator[] accumulators = acc != null ? acc.toArray(new FieldAccumulator[acc.size()]) : null; return new ObjectFilterImpl<>(this, metadataAdapter, parsingResult, accumulators); }
private LuceneQueryParsingResult<Class<?>> parseAndTransform(String queryString, Map<String, Object> namedParameters) { ExtendedSearchIntegrator searchFactory = factoryHolder.getSearchFactory(); HibernateSearchPropertyHelper propertyHelper = new HibernateSearchPropertyHelper(searchFactory, new ReflectionEntityNamesResolver(null)); IckleParsingResult<Class<?>> ickleParsingResult = IckleParser.parse(queryString, propertyHelper); LuceneQueryMaker<Class<?>> luceneQueryMaker = new LuceneQueryMaker<>(searchFactory, propertyHelper.getDefaultFieldBridgeProvider()); return luceneQueryMaker.transform(ickleParsingResult, namedParameters, ickleParsingResult.getTargetEntityMetadata()); } }