List of usage examples for org.apache.lucene.search BooleanQuery BooleanQuery
BooleanQuery
From source file:com.bericotech.clavin.gazetteer.query.LuceneGazetteer.java
License:Apache License
/** * Builds a Lucene search filter based on the provided parameters. * @param params the query configuration parameters * @return a Lucene search filter that will restrict the returned documents to the criteria provided or <code>null</code> * if no filtering is necessary/*w w w .ja v a 2 s . c om*/ */ private Filter buildFilter(final GazetteerQuery params) { List<Query> queryParts = new ArrayList<Query>(); // create the historical locations restriction if we are not including historical locations if (!params.isIncludeHistorical()) { int val = IndexField.getBooleanIndexValue(false); queryParts.add(NumericRangeQuery.newIntRange(HISTORICAL.key(), val, val, true, true)); } // create the parent ID restrictions if we were provided at least one parent ID Set<Integer> parentIds = params.getParentIds(); if (!parentIds.isEmpty()) { BooleanQuery parentQuery = new BooleanQuery(); // locations must descend from at least one of the specified parents (OR) for (Integer id : parentIds) { parentQuery.add(NumericRangeQuery.newIntRange(ANCESTOR_IDS.key(), id, id, true, true), Occur.SHOULD); } queryParts.add(parentQuery); } // create the feature code restrictions if we were provided some, but not all, feature codes Set<FeatureCode> codes = params.getFeatureCodes(); if (!(codes.isEmpty() || ALL_CODES.equals(codes))) { BooleanQuery codeQuery = new BooleanQuery(); // locations must be one of the specified feature codes (OR) for (FeatureCode code : codes) { codeQuery.add(new TermQuery(new Term(FEATURE_CODE.key(), code.name())), Occur.SHOULD); } queryParts.add(codeQuery); } Filter filter = null; if (!queryParts.isEmpty()) { BooleanQuery bq = new BooleanQuery(); for (Query part : queryParts) { bq.add(part, Occur.MUST); } filter = new QueryWrapperFilter(bq); } return filter; }
From source file:com.bewsia.script.LuceneHandler.java
License:Open Source License
public int count(String kind, Query query, Filter filter, Sort sort, int max) { int tag = 0;//from w w w . ja va 2 s . c o m try { IndexReader reader = IndexReader.open(FSDirectory.open(new File(dirIndex))); IndexSearcher searcher = new IndexSearcher(reader); BooleanQuery boolQuery = new BooleanQuery(); boolQuery.add(new BooleanClause(new TermQuery(new Term(SEntity.KIND, kind)), Occur.MUST)); if (query != null) { boolQuery.add(new BooleanClause(query, Occur.MUST)); } TopDocs td = null; if (filter != null && sort != null) { td = searcher.search(boolQuery, filter, max, sort); } else if (filter != null) { td = searcher.search(boolQuery, filter, max); } else if (sort != null) { td = searcher.search(boolQuery, max, sort); } else { td = searcher.search(boolQuery, max); } tag = td.totalHits; searcher.close(); reader.close(); } catch (Exception e) { } return tag; }
From source file:com.bewsia.script.LuceneHandler.java
License:Open Source License
public List<SEntity> search(String kind, Query query, Filter filter, Sort sort, int max) { List<SEntity> tag = new ArrayList<SEntity>(); try {//www . ja v a2 s . com IndexReader reader = IndexReader.open(FSDirectory.open(new File(dirIndex))); IndexSearcher searcher = new IndexSearcher(reader); BooleanQuery boolQuery = new BooleanQuery(); boolQuery.add(new BooleanClause(new TermQuery(new Term(SEntity.KIND, kind)), Occur.MUST)); if (query != null) { boolQuery.add(new BooleanClause(query, Occur.MUST)); } TopDocs td = null; if (filter != null && sort != null) { td = searcher.search(boolQuery, filter, max, sort); } else if (filter != null) { td = searcher.search(boolQuery, filter, max); } else if (sort != null) { td = searcher.search(boolQuery, max, sort); } else { td = searcher.search(boolQuery, max); } for (int i = 0; i < td.totalHits; i++) { SEntity item = new SEntity(this); Document doc = searcher.doc(td.scoreDocs[i].doc); item.setSchema(doc.get(SEntity.SCHEMA)); read(item, doc); tag.add(item); } searcher.close(); reader.close(); } catch (Exception e) { } return tag; }
From source file:com.bewsia.script.LuceneHandler.java
License:Open Source License
public List<SEntity> search(String kind, Query query, Filter filter, Sort sort, int pagesize, int pageno) { List<SEntity> tag = new ArrayList<SEntity>(); try {//from www . ja va 2s . c o m IndexReader reader = IndexReader.open(FSDirectory.open(new File(dirIndex))); IndexSearcher searcher = new IndexSearcher(reader); BooleanQuery boolQuery = new BooleanQuery(); boolQuery.add(new BooleanClause(new TermQuery(new Term(SEntity.KIND, kind)), Occur.MUST)); if (query != null) { boolQuery.add(new BooleanClause(query, Occur.MUST)); } if (pagesize <= 0) pagesize = 10; if (pageno <= 0) pageno = 1; int max = pageno * pagesize; TopDocs td = null; if (filter != null && sort != null) { td = searcher.search(boolQuery, filter, max, sort); } else if (filter != null) { td = searcher.search(boolQuery, filter, max); } else if (sort != null) { td = searcher.search(boolQuery, max, sort); } else { td = searcher.search(boolQuery, max); } for (int i = (pageno - 1) * pagesize; i < td.totalHits && i < max; i++) { SEntity item = new SEntity(this); Document doc = searcher.doc(td.scoreDocs[i].doc); item.setSchema(doc.get(SEntity.SCHEMA)); read(item, doc); tag.add(item); } searcher.close(); reader.close(); } catch (Exception e) { } return tag; }
From source file:com.bewsia.script.safe.lucene.SEntity.java
License:Open Source License
public BooleanQuery newBooleanQuery() { return new BooleanQuery(); }
From source file:com.bluedragon.search.search.QueryAttributes.java
License:Open Source License
public boolean setCategory(String category) throws ParseException { if (category == null || category.length() == 0) return false; String[] categories = category.split(","); Query catQuery = null;/*from www. j a v a 2 s . com*/ QueryParser qp = new QueryParser(DocumentWrap.CATEGORY, AnalyzerFactory.get(collectionsList.get(0).getLanguage())); if (categories.length == 1) { catQuery = qp.parse(categories[0]); } else { catQuery = new BooleanQuery(); for (int i = 0; i < categories.length; i++) { ((BooleanQuery) catQuery).add(qp.parse(categories[i]), BooleanClause.Occur.SHOULD); } } this.query = combineQueries(catQuery, this.query); return true; }
From source file:com.bluedragon.search.search.QueryAttributes.java
License:Open Source License
private Query combineQueries(Query q1, Query q2) { if (q1 == null) { return q2; } else if (q2 == null) { return q1; } else {/*from w ww. ja v a2 s . c om*/ BooleanQuery combinedQry = new BooleanQuery(); combinedQry.add(q1, BooleanClause.Occur.MUST); combinedQry.add(q2, BooleanClause.Occur.MUST); return combinedQry; } }
From source file:com.browseengine.bobo.test.FacetNotValuesTest.java
License:Open Source License
public void testNotValuesForRangeFacetHandler() throws Exception { System.out.println("testNotValuesForRangeFacetHandler"); BrowseResult result = null;//from w w w .j av a 2 s .c om BoboBrowser boboBrowser = null; try { Directory ramIndexDir = createIndexTwo(); IndexReader srcReader = IndexReader.open(ramIndexDir, true); boboBrowser = new BoboBrowser(BoboIndexReader.getInstance(srcReader, _facetHandlers, null)); BrowseRequest br = new BrowseRequest(); br.setCount(20); br.setOffset(0); if (_idRanges == null) { log.error("_idRanges cannot be null in order to test NOT on RangeFacetHandler"); } BrowseSelection idSel = new BrowseSelection("idRange"); int rangeIndex = 2; idSel.addNotValue(_idRanges[0]); int expectedHitNum = 1; br.addSelection(idSel); BooleanQuery q = new BooleanQuery(); q.add(NumericRangeQuery.newIntRange("NUM", 10, 10, true, true), Occur.MUST_NOT); q.add(new MatchAllDocsQuery(), Occur.MUST); br.setQuery(q); result = boboBrowser.browse(br); assertEquals(expectedHitNum, result.getNumHits()); for (int i = 0; i < result.getNumHits(); i++) { System.out.println(result.getHits()[i]); } } catch (BrowseException e) { e.printStackTrace(); fail(e.getMessage()); } catch (IOException ioe) { fail(ioe.getMessage()); } finally { if (boboBrowser != null) { try { if (result != null) result.close(); boboBrowser.close(); } catch (IOException e) { fail(e.getMessage()); } } } }
From source file:com.browseengine.bobo.test.LucenePerf.java
License:Apache License
private static long oneRun(BoboIndexReader boboReader, Collection<FacetHandler<?>> facetHandlers) throws IOException, BrowseException { long tt = 0;/*ww w . j a va 2 s . c om*/ long hitscount = 0; for (int x = 0; x < inNumItr; x++) { long t0 = System.currentTimeMillis(); BoboBrowser browser = new BoboBrowser(boboReader); BrowseRequest req = new BrowseRequest(); req.setCount(500); FacetSpec spec = new FacetSpec(); spec.setMaxCount(50); spec.setOrderBy(FacetSortSpec.OrderHitsDesc); // req.setFacetSpec("ccid", spec); // req.setFacetSpec("pcid", spec); // req.setFacetSpec("education_id", spec); req.setFacetSpec("geo_region", spec); // req.setFacetSpec("industry", spec); String qstr = words[nextInt()]; // qstr = "project manager"; String[] terms = qstr.split(" "); BooleanQuery q = new BooleanQuery(); for (String s : terms) { q.add(new TermQuery(new Term("b", s)), Occur.MUST); } // q.add(new MatchAllDocsQuery(), Occur.MUST); req.setQuery(q);//new TermQuery(new Term("b",qstr))); BrowseSelection sel = new BrowseSelection("ccid"); sel.addValue("0000001384"); // req.addSelection(sel ); BrowseSelection seli = new BrowseSelection("industry"); seli.addValue("0000000052"); // req.addSelection(seli ); long tf0 = 0; long tf1 = 0; BrowseResult bres = browser.browse(req); for (Entry<String, FacetAccessible> entry : bres.getFacetMap().entrySet()) { // System.out.println(entry.getKey()); FacetAccessible fa = entry.getValue(); tf0 = System.currentTimeMillis(); List<BrowseFacet> facets = fa.getFacets(); tf1 = System.currentTimeMillis(); System.out.println(tf1 - tf0 + "\tfacet " + entry.getKey() + " get time\tsize: " + facets.size()); // System.out.println(Arrays.toString(facets.toArray())); fa.close(); } browser.close(); // System.out.println(t2 - t0 +"\ttotal time\t\t\t hits: "+ bres.getNumHits()); hitscount += bres.getNumHits(); long t2 = System.currentTimeMillis(); tt += (t2 - t0); browser.close(); // System.out.println(t2 - t0 -(tf1-tf0)+"\tsearch time\t"); } if (hitscount > 80000) System.out.println("avg hits count: " + hitscount / inNumItr); try { Thread.sleep(50); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } return tt; }
From source file:com.browseengine.bobo.test.section.TestSectionSearch.java
License:Apache License
public void testSimpleSearch() throws Exception { BooleanQuery bquery;//from w w w . j a v a2 s. c om SectionSearchQuery squery; int count; // 1. (+f1:aa +f2:aaa) bquery = new BooleanQuery(); bquery.add(new TermQuery(new Term("f1", "aa")), BooleanClause.Occur.MUST); bquery.add(new TermQuery(new Term("f2", "aaa")), BooleanClause.Occur.MUST); count = getNumHits(bquery, searcher); assertEquals("non-section count mismatch", 4, count); squery = new SectionSearchQuery(bquery); count = getNumHits(squery, searcher); assertEquals("seciton count mismatch", 2, count); // 2. (+f1:bb + f2:aaa) bquery = new BooleanQuery(); bquery.add(new TermQuery(new Term("f1", "bb")), BooleanClause.Occur.MUST); bquery.add(new TermQuery(new Term("f2", "aaa")), BooleanClause.Occur.MUST); count = getNumHits(bquery, searcher); assertEquals("non-section count mismatch", 4, count); squery = new SectionSearchQuery(bquery); count = getNumHits(squery, searcher); assertEquals("seciton count mismatch", 3, count); // 3. (+f1:aa +f2:bbb) bquery = new BooleanQuery(); bquery.add(new TermQuery(new Term("f1", "aa")), BooleanClause.Occur.MUST); bquery.add(new TermQuery(new Term("f2", "bbb")), BooleanClause.Occur.MUST); count = getNumHits(bquery, searcher); assertEquals("non-section count mismatch", 3, count); squery = new SectionSearchQuery(bquery); count = getNumHits(squery, searcher); assertEquals("seciton count mismatch", 2, count); // 4. (+f1:aa +(f2:bbb f2:ccc)) BooleanQuery bquery2 = new BooleanQuery(); bquery2.add(new TermQuery(new Term("f2", "bbb")), BooleanClause.Occur.SHOULD); bquery2.add(new TermQuery(new Term("f2", "ccc")), BooleanClause.Occur.SHOULD); bquery = new BooleanQuery(); bquery.add(new TermQuery(new Term("f1", "aa")), BooleanClause.Occur.MUST); bquery.add(bquery2, BooleanClause.Occur.MUST); count = getNumHits(bquery, searcher); assertEquals("non-section count mismatch", 4, count); squery = new SectionSearchQuery(bquery); count = getNumHits(squery, searcher); assertEquals("section count mismatch", 3, count); }