List of usage examples for org.apache.lucene.search BooleanQuery clauses
List clauses
To view the source code for org.apache.lucene.search BooleanQuery clauses.
Click Source Link
From source file:io.crate.lucene.CommonQueryBuilderTest.java
License:Apache License
@Test public void testEqOnTwoArraysBecomesGenericFunctionQuery() throws Exception { Query query = convert("y_array = [10, 20, 30]"); assertThat(query, instanceOf(BooleanQuery.class)); BooleanQuery booleanQuery = (BooleanQuery) query; assertThat(booleanQuery.clauses().get(0).getQuery(), instanceOf(PointInSetQuery.class)); assertThat(booleanQuery.clauses().get(1).getQuery(), instanceOf(GenericFunctionQuery.class)); }
From source file:io.crate.lucene.CommonQueryBuilderTest.java
License:Apache License
@Test public void testEqOnArrayWithTooManyClauses() throws Exception { Object[] values = new Object[2000]; // should trigger the TooManyClauses exception Arrays.fill(values, 10L);//from ww w . jav a 2 s . co m SqlExpressions sqlExpressions = new SqlExpressions(sources, new Object[] { values }); Query query = convert(new WhereClause(expressions.normalize(sqlExpressions.asSymbol("y_array = ?")))); assertThat(query, instanceOf(BooleanQuery.class)); BooleanQuery booleanQuery = (BooleanQuery) query; assertThat(booleanQuery.clauses().get(0).getQuery(), instanceOf(PointInSetQuery.class)); assertThat(booleanQuery.clauses().get(1).getQuery(), instanceOf(GenericFunctionQuery.class)); }
From source file:io.crate.lucene.CommonQueryBuilderTest.java
License:Apache License
@Test public void testLikeAnyOnArrayLiteral() throws Exception { Query likeQuery = convert("name like any (['a', 'b', 'c'])"); assertThat(likeQuery, instanceOf(BooleanQuery.class)); BooleanQuery likeBQuery = (BooleanQuery) likeQuery; assertThat(likeBQuery.clauses().size(), is(3)); for (int i = 0; i < 2; i++) { // like --> ConstantScoreQuery with regexp-filter Query filteredQuery = likeBQuery.clauses().get(i).getQuery(); assertThat(filteredQuery, instanceOf(WildcardQuery.class)); }/*from w w w.j a v a2 s .c o m*/ }
From source file:io.crate.lucene.CommonQueryBuilderTest.java
License:Apache License
@Test public void testNotLikeAnyOnArrayLiteral() throws Exception { Query notLikeQuery = convert("name not like any (['a', 'b', 'c'])"); assertThat(notLikeQuery, instanceOf(BooleanQuery.class)); BooleanQuery notLikeBQuery = (BooleanQuery) notLikeQuery; assertThat(notLikeBQuery.clauses(), hasSize(2)); BooleanClause clause = notLikeBQuery.clauses().get(1); assertThat(clause.getOccur(), is(BooleanClause.Occur.MUST_NOT)); assertThat(((BooleanQuery) clause.getQuery()).clauses(), hasSize(3)); for (BooleanClause innerClause : ((BooleanQuery) clause.getQuery()).clauses()) { assertThat(innerClause.getOccur(), is(BooleanClause.Occur.MUST)); assertThat(innerClause.getQuery(), instanceOf(WildcardQuery.class)); }/*from www .j a va 2 s .c om*/ }
From source file:io.crate.lucene.LuceneQueryBuilderTest.java
License:Apache License
@Test public void testAnyOnArrayLiteral() throws Exception { Reference ref = createReference("d", DataTypes.STRING); Literal stringArrayLiteral = Literal.newLiteral( new Object[] { new BytesRef("a"), new BytesRef("b"), new BytesRef("c") }, new ArrayType(DataTypes.STRING)); Query neqQuery = convert("name != any (['a', 'b', 'c'])"); assertThat(neqQuery, instanceOf(FilteredQuery.class)); assertThat(((FilteredQuery) neqQuery).getFilter(), instanceOf(BooleanFilter.class)); BooleanFilter filter = (BooleanFilter) ((FilteredQuery) neqQuery).getFilter(); assertThat(filter.toString(), is("BooleanFilter(-BooleanFilter(+name:a +name:b +name:c))")); Query likeQuery = convert("name like any (['a', 'b', 'c'])"); assertThat(likeQuery, instanceOf(BooleanQuery.class)); BooleanQuery likeBQuery = (BooleanQuery) likeQuery; assertThat(likeBQuery.clauses().size(), is(3)); for (int i = 0; i < 2; i++) { // like --> XConstantScoreQuery with regexp-filter Query filteredQuery = likeBQuery.clauses().get(i).getQuery(); assertThat(filteredQuery, instanceOf(WildcardQuery.class)); }/*from www. j a va 2s. c om*/ Query notLikeQuery = convert("name not like any (['a', 'b', 'c'])"); assertThat(notLikeQuery, instanceOf(BooleanQuery.class)); BooleanQuery notLikeBQuery = (BooleanQuery) notLikeQuery; assertThat(notLikeBQuery.clauses(), hasSize(1)); BooleanClause clause = notLikeBQuery.clauses().get(0); assertThat(clause.getOccur(), is(BooleanClause.Occur.MUST_NOT)); assertThat(((BooleanQuery) clause.getQuery()).clauses(), hasSize(3)); for (BooleanClause innerClause : ((BooleanQuery) clause.getQuery()).clauses()) { assertThat(innerClause.getOccur(), is(BooleanClause.Occur.MUST)); assertThat(innerClause.getQuery(), instanceOf(WildcardQuery.class)); } Query ltQuery2 = convert("name < any (['a', 'b', 'c'])"); assertThat(ltQuery2, instanceOf(BooleanQuery.class)); BooleanQuery ltBQuery = (BooleanQuery) ltQuery2; assertThat(ltBQuery.toString(), is("(name:{* TO a} name:{* TO b} name:{* TO c})~1")); }
From source file:io.crate.operation.collect.collectors.LuceneOrderedDocCollector.java
License:Apache License
@Nullable @VisibleForTesting/*from ww w . j ava 2s . c o m*/ static Query nextPageQuery(FieldDoc lastCollected, OrderBy orderBy, Object[] missingValues, FieldTypeLookup fieldTypeLookup) { BooleanQuery.Builder queryBuilder = new BooleanQuery.Builder(); for (int i = 0; i < orderBy.orderBySymbols().size(); i++) { Symbol order = orderBy.orderBySymbols().get(i); Object value = lastCollected.fields[i]; if (order instanceof Reference) { boolean nullsFirst = orderBy.nullsFirst()[i] == null ? false : orderBy.nullsFirst()[i]; value = value == null || value.equals(missingValues[i]) ? null : value; if (nullsFirst && value == null) { // no filter needed continue; } String columnName = ((Reference) order).ident().columnIdent().fqn(); MappedFieldType fieldType = requireNonNull(fieldTypeLookup.get(columnName), "Column must exist: " + columnName); Query orderQuery; // nulls already gone, so they should be excluded if (nullsFirst) { BooleanQuery.Builder booleanQuery = new BooleanQuery.Builder(); booleanQuery.add(new MatchAllDocsQuery(), BooleanClause.Occur.MUST); if (orderBy.reverseFlags()[i]) { booleanQuery.add(fieldType.rangeQuery(null, value, false, true), BooleanClause.Occur.MUST_NOT); } else { booleanQuery.add(fieldType.rangeQuery(value, null, true, false), BooleanClause.Occur.MUST_NOT); } orderQuery = booleanQuery.build(); } else { if (orderBy.reverseFlags()[i]) { orderQuery = fieldType.rangeQuery(value, null, false, false); } else { orderQuery = fieldType.rangeQuery(null, value, false, false); } } queryBuilder.add(orderQuery, BooleanClause.Occur.MUST); } } BooleanQuery query = queryBuilder.build(); if (query.clauses().size() > 0) { return query; } else { return null; } }
From source file:io.crate.operation.collect.collectors.OptimizeQueryForSearchAfter.java
License:Apache License
@Override public Query apply(FieldDoc lastCollected) { BooleanQuery.Builder queryBuilder = new BooleanQuery.Builder(); for (int i = 0; i < orderBy.orderBySymbols().size(); i++) { Symbol order = orderBy.orderBySymbols().get(i); Object value = lastCollected.fields[i]; if (order instanceof Reference) { final ColumnIdent columnIdent = ((Reference) order).ident().columnIdent(); if (columnIdent.isSystemColumn()) { // We can't optimize the initial query because the BooleanQuery // must not contain system columns. return null; }/*from w w w . jav a 2 s . c om*/ boolean nullsFirst = orderBy.nullsFirst()[i] == null ? false : orderBy.nullsFirst()[i]; value = value == null || value.equals(missingValues[i]) ? null : value; if (nullsFirst && value == null) { // no filter needed continue; } String columnName = columnIdent.fqn(); MappedFieldType fieldType = requireNonNull(fieldTypeLookup.get(columnName), "Column must exist: " + columnName); Query orderQuery; // nulls already gone, so they should be excluded if (nullsFirst) { BooleanQuery.Builder booleanQuery = new BooleanQuery.Builder(); booleanQuery.add(new MatchAllDocsQuery(), BooleanClause.Occur.MUST); if (orderBy.reverseFlags()[i]) { booleanQuery.add(fieldType.rangeQuery(null, value, false, true, queryShardContext), BooleanClause.Occur.MUST_NOT); } else { booleanQuery.add(fieldType.rangeQuery(value, null, true, false, queryShardContext), BooleanClause.Occur.MUST_NOT); } orderQuery = booleanQuery.build(); } else { if (orderBy.reverseFlags()[i]) { orderQuery = fieldType.rangeQuery(value, null, false, false, queryShardContext); } else { orderQuery = fieldType.rangeQuery(null, value, false, false, queryShardContext); } } queryBuilder.add(orderQuery, BooleanClause.Occur.MUST); } } BooleanQuery query = queryBuilder.build(); if (query.clauses().size() > 0) { return query; } else { return null; } }
From source file:io.crate.operation.collect.collectors.OrderedDocCollector.java
License:Apache License
@Nullable public static Query nextPageQuery(FieldDoc lastCollected, OrderBy orderBy, Object[] missingValues) { BooleanQuery query = new BooleanQuery(); for (int i = 0; i < orderBy.orderBySymbols().size(); i++) { Symbol order = orderBy.orderBySymbols().get(i); Object value = lastCollected.fields[i]; if (order instanceof Reference) { boolean nullsFirst = orderBy.nullsFirst()[i] == null ? false : orderBy.nullsFirst()[i]; value = value.equals(missingValues[i]) ? null : value; if (nullsFirst && value == null) { // no filter needed continue; }//from ww w.j a va 2s . c o m QueryBuilderHelper helper = QueryBuilderHelper.forType(order.valueType()); String columnName = ((Reference) order).info().ident().columnIdent().fqn(); Query orderQuery; // nulls already gone, so they should be excluded if (nullsFirst && value != null) { BooleanFilter booleanFilter = new BooleanFilter(); if (orderBy.reverseFlags()[i]) { booleanFilter.add(helper.rangeFilter(columnName, null, value, false, true), BooleanClause.Occur.MUST_NOT); } else { booleanFilter.add(helper.rangeFilter(columnName, value, null, true, false), BooleanClause.Occur.MUST_NOT); } orderQuery = new FilteredQuery(new MatchAllDocsQuery(), booleanFilter); } else { if (orderBy.reverseFlags()[i]) { orderQuery = helper.rangeQuery(columnName, value, null, false, false); } else { orderQuery = helper.rangeQuery(columnName, null, value, false, false); } } query.add(orderQuery, BooleanClause.Occur.MUST); } } if (query.clauses().size() > 0) { return query; } else { return null; } }
From source file:net.sf.mmm.search.engine.impl.lucene.LuceneSearchQueryBuilderFactoryTest.java
License:Apache License
/** * Test of {@link SearchQueryBuilder#createComplexQuery()}. *///w w w . j a v a 2 s. c o m @Test public void testCreateComplexQuery() { SearchQueryBuilder queryBuilder = getQueryBuilder(); ComplexSearchQuery complexQuery = queryBuilder.createComplexQuery(); BooleanQuery booleanQuery = getLuceneQuery(complexQuery, BooleanQuery.class); Assert.assertEquals(0, complexQuery.getSubQueryCount()); SearchQuery subQuery1 = queryBuilder.createWordQuery(SearchEntry.FIELD_TEXT, "foo"); complexQuery.addRequiredQuery(subQuery1); Assert.assertEquals(1, complexQuery.getSubQueryCount()); SearchQuery subQuery2 = queryBuilder.createWordQuery(SearchEntry.FIELD_TEXT, "bar"); complexQuery.addRequiredQuery(subQuery2); Assert.assertEquals(2, complexQuery.getSubQueryCount()); SearchQuery subQuery3 = queryBuilder.createWordQuery(SearchEntry.FIELD_TEXT, "some"); complexQuery.addExcludingQuery(subQuery3); Assert.assertEquals(3, complexQuery.getSubQueryCount()); SearchQuery subQuery4 = queryBuilder.createWordQuery(SearchEntry.FIELD_TEXT, "thing"); complexQuery.addOptionalQuery(subQuery4); Assert.assertEquals(4, complexQuery.getSubQueryCount()); List<BooleanClause> clauses = booleanQuery.clauses(); Assert.assertNotNull(clauses); Assert.assertEquals(4, clauses.size()); Assert.assertSame(getLuceneQuery(subQuery1), clauses.get(0).getQuery()); Assert.assertSame(Occur.MUST, clauses.get(0).getOccur()); Assert.assertSame(getLuceneQuery(subQuery2), clauses.get(1).getQuery()); Assert.assertSame(Occur.MUST, clauses.get(1).getOccur()); Assert.assertSame(getLuceneQuery(subQuery3), clauses.get(2).getQuery()); Assert.assertSame(Occur.MUST_NOT, clauses.get(2).getOccur()); Assert.assertSame(getLuceneQuery(subQuery4), clauses.get(3).getQuery()); Assert.assertSame(Occur.SHOULD, clauses.get(3).getOccur()); }
From source file:net.sf.mmm.search.engine.impl.lucene.LuceneSearchQueryBuilderFactoryTest.java
License:Apache License
/** * Test of {@link SearchQueryBuilder#parseStandardQuery(String)}. */// www . j a va 2s. c om @Test public void testParseStandardQuery() { SearchQueryBuilder queryBuilder = getQueryBuilder(); SearchQuery query = queryBuilder.parseStandardQuery("foo *bar* +(some* thing) -exclude"); BooleanQuery booleanQuery = getLuceneQuery(query, BooleanQuery.class); List<BooleanClause> clauses = booleanQuery.clauses(); Assert.assertNotNull(clauses); Assert.assertEquals(4, clauses.size()); Assert.assertEquals("foo", getLuceneQuery(clauses.get(0).getQuery(), TermQuery.class).getTerm().text()); Assert.assertSame(Occur.SHOULD, clauses.get(0).getOccur()); Assert.assertEquals("*bar*", getLuceneQuery(clauses.get(1).getQuery(), WildcardQuery.class).getTerm().text()); Assert.assertSame(Occur.SHOULD, clauses.get(1).getOccur()); Assert.assertEquals("exclude", getLuceneQuery(clauses.get(3).getQuery(), TermQuery.class).getTerm().text()); Assert.assertSame(Occur.MUST_NOT, clauses.get(3).getOccur()); BooleanQuery subQuery = getLuceneQuery(clauses.get(2).getQuery(), BooleanQuery.class); Assert.assertSame(Occur.MUST, clauses.get(2).getOccur()); List<BooleanClause> subClauses = subQuery.clauses(); Assert.assertNotNull(subClauses); Assert.assertEquals(2, subClauses.size()); Assert.assertEquals("some", getLuceneQuery(subClauses.get(0).getQuery(), PrefixQuery.class).getPrefix().text()); Assert.assertSame(Occur.SHOULD, subClauses.get(0).getOccur()); Assert.assertEquals("thing", getLuceneQuery(subClauses.get(1).getQuery(), TermQuery.class).getTerm().text()); Assert.assertSame(Occur.SHOULD, subClauses.get(1).getOccur()); query = queryBuilder.parseStandardQuery("()"); MatchAllDocsQuery allDocsQuery = getLuceneQuery(query, MatchAllDocsQuery.class); Assert.assertNotNull(allDocsQuery); }