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:org.apache.blur.lucene.search.RandomSuperQueryTest.java
License:Apache License
private List<Document> generatSuperDoc(Random random, Map<String, String[]> columns, Collection<Query> sampler) { List<Document> docs = new ArrayList<Document>(); BooleanQuery booleanQuery = new BooleanQuery(); for (String colFam : columns.keySet()) { String[] cols = columns.get(colFam); for (int i = 0; i < random.nextInt(MAX_NUM_DOCS_PER_COL_FAM); i++) { Document doc = new Document(); for (String column : cols) { if (random.nextInt() % MOD_COLS_USED_FOR_SKIPPING == 0) { String word = genWord(random, "word"); doc.add(new StringField(colFam + "." + column, word, Store.YES)); if (random.nextInt() % MOD_USED_FOR_SAMPLING == 0) { TermQuery termQuery = new TermQuery(new Term(colFam + "." + column, word)); SuperQuery query = new SuperQuery(termQuery, ScoreType.SUPER, new Term(PRIME_DOC, PRIME_DOC_VALUE)); booleanQuery.add(query, Occur.MUST); }//from ww w. j a v a2 s . co m } } docs.add(doc); } } if (!booleanQuery.clauses().isEmpty()) { sampler.add(booleanQuery); } Document document = docs.get(0); document.add(new StringField(PRIME_DOC, PRIME_DOC_VALUE, Store.NO)); return docs; }
From source file:org.apache.blur.lucene.search.SuperParser.java
License:Apache License
private Query fixNegatives(Query query) { if (query instanceof SuperQuery) { SuperQuery superQuery = (SuperQuery) query; fixNegatives(superQuery.getQuery()); } else if (query instanceof BooleanQuery) { BooleanQuery booleanQuery = (BooleanQuery) query; for (BooleanClause clause : booleanQuery.clauses()) { fixNegatives(clause.getQuery()); }/*from w w w . j a va 2s .c om*/ if (containsAllNegativeQueries(booleanQuery)) { if (containsSuperQueries(booleanQuery)) { booleanQuery.add(new TermQuery(_defaultPrimeDocTerm), Occur.SHOULD); } else { booleanQuery.add(new MatchAllDocsQuery(), Occur.SHOULD); } } } return query; }
From source file:org.apache.blur.lucene.search.SuperParser.java
License:Apache License
private boolean containsAllNegativeQueries(BooleanQuery booleanQuery) { for (BooleanClause clause : booleanQuery.clauses()) { if (clause.getOccur() == Occur.MUST || clause.getOccur() == Occur.SHOULD) { return false; }//from w w w.ja va 2 s .c o m } return true; }
From source file:org.apache.blur.lucene.search.SuperParser.java
License:Apache License
private boolean isSameGroupName(Query query, String groupName) { if (query instanceof BooleanQuery) { BooleanQuery booleanQuery = (BooleanQuery) query; for (BooleanClause clause : booleanQuery.clauses()) { if (!isSameGroupName(clause.getQuery(), groupName)) { return false; }// w ww . ja v a 2 s.c om } return true; } else { String fieldName = _fieldNames.get(query); String currentGroupName = getGroupName(fieldName); if (groupName.equals(currentGroupName) || isSystemField(fieldName)) { return true; } return false; } }
From source file:org.apache.blur.lucene.search.SuperParser.java
License:Apache License
private String findFirstGroupName(Query query) { if (query instanceof BooleanQuery) { BooleanQuery booleanQuery = (BooleanQuery) query; for (BooleanClause clause : booleanQuery.clauses()) { return findFirstGroupName(clause.getQuery()); }// w w w . j ava 2 s . c o m return null; } else if (query instanceof SuperQuery) { SuperQuery sq = (SuperQuery) query; return findFirstGroupName(sq.getQuery()); } else { String fieldName = _fieldNames.get(query); return getGroupName(fieldName); } }
From source file:org.apache.blur.lucene.search.SuperParserTest.java
License:Apache License
public static void assertEqualsBooleanQuery(BooleanQuery expected, BooleanQuery actual) { List<BooleanClause> clauses1 = expected.clauses(); List<BooleanClause> clauses2 = actual.clauses(); assertEqualsBooleanClause(clauses1, clauses2); }
From source file:org.apache.blur.manager.AliasBlurFilterCache.java
License:Apache License
private Filter buildNewFilter(Query query, ConcurrentMap<String, String> filterAlias, FilterParser filterParser) throws ParseException { if (query instanceof BooleanQuery) { BooleanQuery booleanQuery = (BooleanQuery) query; BooleanFilter booleanFilter = new BooleanFilter(); for (BooleanClause clause : booleanQuery.clauses()) { booleanFilter.add(buildNewFilter(clause.getQuery(), filterAlias, filterParser), clause.getOccur()); }//from w ww . ja v a 2s . c om return booleanFilter; } else if (query instanceof TermQuery) { TermQuery termQuery = (TermQuery) query; Term term = termQuery.getTerm(); String key = term.toString(); String queryStr = filterAlias.get(key); if (queryStr == null) { return new QueryWrapperFilter(termQuery); } String id = getId(key); return new FilterCache(id, new QueryWrapperFilter(filterParser.parse(queryStr))); } else { return new QueryWrapperFilter(query); } }
From source file:org.apache.blur.server.BlurSecureIndexSearcher.java
License:Apache License
/** * This method is very important!!! It handles rewriting the real query (which * can be a {@link SuperQuery} to have document (record) level filtering or * access control./* w w w . j a v a 2 s . co m*/ */ @Override protected Query wrapFilter(Query query, Filter filter) { if (filter == null) { return query; } else if (query instanceof SuperQuery) { SuperQuery superQuery = (SuperQuery) query; Query innerQuery = superQuery.getQuery(); Term primeDocTerm = superQuery.getPrimeDocTerm(); ScoreType scoreType = superQuery.getScoreType(); return new SuperQuery(wrapFilter(innerQuery, filter), scoreType, primeDocTerm); } else if (query instanceof BooleanQuery) { BooleanQuery booleanQuery = (BooleanQuery) query; List<BooleanClause> clauses = booleanQuery.clauses(); for (BooleanClause booleanClause : clauses) { booleanClause.setQuery(wrapFilter(booleanClause.getQuery(), filter)); } return booleanQuery; } else { return new FilteredQuery(query, filter); } }
From source file:org.apache.blur.server.BlurSecureIndexSearcherTest.java
License:Apache License
@Test public void testQueryFilterWrap2() throws IOException { IndexReader r = getIndexReader();/*from w ww.j a va2 s. c om*/ AccessControlFactory accessControlFactory = new FilterAccessControlFactory(); Collection<String> readAuthorizations = new ArrayList<String>(); Collection<String> discoverAuthorizations = new ArrayList<String>(); Set<String> discoverableFields = new HashSet<String>(Arrays.asList("rowid")); BlurSecureIndexSearcher blurSecureIndexSearcher = new BlurSecureIndexSearcher(r, null, accessControlFactory, readAuthorizations, discoverAuthorizations, discoverableFields); Query wrapFilter; Query query = new TermQuery(new Term("a", "b")); Filter filter = new Filter() { @Override public DocIdSet getDocIdSet(AtomicReaderContext context, Bits acceptDocs) throws IOException { throw new RuntimeException("Not implemented."); } }; { Term primeDocTerm = new Term(BlurConstants.PRIME_DOC, BlurConstants.PRIME_DOC_VALUE); ScoreType scoreType = ScoreType.SUPER; SuperQuery superQuery = new SuperQuery(query, scoreType, primeDocTerm); BooleanQuery booleanQuery = new BooleanQuery(); booleanQuery.add(superQuery, Occur.MUST); wrapFilter = blurSecureIndexSearcher.wrapFilter(booleanQuery, filter); System.out.println(wrapFilter); } { assertTrue(wrapFilter instanceof BooleanQuery); BooleanQuery booleanQuery = (BooleanQuery) wrapFilter; assertEquals(1, booleanQuery.clauses().size()); BooleanClause booleanClause = booleanQuery.clauses().get(0); Query innerClause = booleanClause.getQuery(); assertTrue(innerClause instanceof SuperQuery); SuperQuery sq = (SuperQuery) innerClause; Query inner = sq.getQuery(); assertTrue(inner instanceof FilteredQuery); FilteredQuery filteredQuery = (FilteredQuery) inner; Query innerFilteredQuery = filteredQuery.getQuery(); assertEquals(innerFilteredQuery, query); assertTrue(filteredQuery.getFilter() == filter); } }
From source file:org.apache.jackrabbit.core.query.lucene.LuceneQueryBuilder.java
License:Apache License
public Object visit(PathQueryNode node, Object data) throws RepositoryException { Query context = null;/*from w w w .j av a 2s .c o m*/ LocationStepQueryNode[] steps = node.getPathSteps(); if (steps.length > 0) { if (node.isAbsolute() && !steps[0].getIncludeDescendants()) { // eat up first step Name nameTest = steps[0].getNameTest(); if (nameTest == null) { // this is equivalent to the root node context = new JackrabbitTermQuery(new Term(FieldNames.PARENT, "")); } else if (nameTest.getLocalName().length() == 0) { // root node context = new JackrabbitTermQuery(new Term(FieldNames.PARENT, "")); } else { // then this is a node != the root node // will never match anything! BooleanQuery and = new BooleanQuery(); and.add(new JackrabbitTermQuery(new Term(FieldNames.PARENT, "")), Occur.MUST); and.add(new NameQuery(nameTest, indexFormatVersion, nsMappings), Occur.MUST); context = and; } // apply predicates Object[] predicates = steps[0].acceptOperands(this, context); BooleanQuery andQuery = new BooleanQuery(); for (Object predicate : predicates) { andQuery.add((Query) predicate, Occur.MUST); } if (andQuery.clauses().size() > 0) { andQuery.add(context, Occur.MUST); context = andQuery; } LocationStepQueryNode[] tmp = new LocationStepQueryNode[steps.length - 1]; System.arraycopy(steps, 1, tmp, 0, steps.length - 1); steps = tmp; } else { // path is 1) relative or 2) descendant-or-self // use root node as context context = new JackrabbitTermQuery(new Term(FieldNames.PARENT, "")); } } else { exceptions.add(new InvalidQueryException("Number of location steps must be > 0")); } // loop over steps for (LocationStepQueryNode step : steps) { context = (Query) step.accept(this, context); } if (data instanceof BooleanQuery) { BooleanQuery constraint = (BooleanQuery) data; if (constraint.getClauses().length > 0) { constraint.add(context, Occur.MUST); context = constraint; } } return context; }