Example usage for org.apache.lucene.search BooleanQuery BooleanQuery

List of usage examples for org.apache.lucene.search BooleanQuery BooleanQuery

Introduction

In this page you can find the example usage for org.apache.lucene.search BooleanQuery BooleanQuery.

Prototype

BooleanQuery

Source Link

Usage

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);
}