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.jaeksoft.searchlib.learning.StandardLearner.java

License:Open Source License

private BooleanQuery getBooleanQuery(String fieldName, String data) throws IOException, SearchLibException {
    BooleanQuery booleanQuery = new BooleanQuery();
    Schema schema = learnerClient.getSchema();
    SchemaField schemaField = schema.getFieldList().get(fieldName);
    Analyzer analyzer = schema.getAnalyzer(schemaField, LanguageEnum.UNDEFINED);
    analyzer.getQueryAnalyzer().toBooleanQuery(fieldName, data, booleanQuery, Occur.SHOULD);
    return booleanQuery;
}

From source file:com.jaeksoft.searchlib.query.QueryParser.java

License:Open Source License

public final Query parse(String query) throws IOException {
    try {/* www .j  av a2s .  com*/
        currentOperator = -1;
        currentField = defaultField;
        holdQuery = null;
        booleanQuery = new BooleanQuery();
        ioError = null;
        ANTLRInputStream input = new ANTLRInputStream(query);
        BooleanQueryLexer lexer = new BooleanQueryLexer(input);
        ErrorListener errorListener = new ErrorListener();
        lexer.removeErrorListeners();
        lexer.addErrorListener(errorListener);
        CommonTokenStream tokens = new CommonTokenStream(lexer);
        BooleanQueryParser parser = new BooleanQueryParser(tokens);
        BailErrorStrategy errorHandler = new BailErrorStrategy();
        parser.setErrorHandler(errorHandler);
        parser.addParseListener(this);
        parser.removeErrorListeners();
        parser.addErrorListener(errorListener);
        parser.expression();
        if (ioError != null)
            throw ioError;
        if (holdQuery != null)
            addBooleanClause(holdQuery, currentOperator);
        return booleanQuery;
    } catch (org.antlr.v4.runtime.RecognitionException e) {
        if (ioError != null)
            throw ioError;
        throw new IOException(e);
    } catch (org.antlr.v4.runtime.misc.ParseCancellationException e) {
        if (ioError != null)
            throw ioError;
        throw new IOException(e);
    }
}

From source file:com.jaeksoft.searchlib.request.AbstractLocalSearchRequest.java

License:Open Source License

private Query newComplexQuery() throws ParseException, SearchLibException, SyntaxError, IOException {
    getQueryParser();/*from w  ww .  j ava2s .  co  m*/
    checkAnalyzer();
    Query query = newComplexQuery(queryString);
    if (query == null)
        query = new BooleanQuery();
    return query;
}

From source file:com.jaeksoft.searchlib.request.AbstractSearchRequest.java

License:Open Source License

@Override
public Query getQuery() throws ParseException, SyntaxError, SearchLibException, IOException {
    rwl.r.lock();//from   w w  w. j  a va 2 s .  c  o m
    try {
        if (boostedComplexQuery != null)
            return boostedComplexQuery;
    } finally {
        rwl.r.unlock();
    }
    rwl.w.lock();
    try {
        if (boostedComplexQuery != null)
            return boostedComplexQuery;
        getQueryParser();
        checkAnalyzer();
        boostedComplexQuery = newComplexQuery(queryString);
        if (boostedComplexQuery == null)
            boostedComplexQuery = new BooleanQuery();
        for (BoostQuery boostQuery : boostingQueries)
            boostedComplexQuery = boostQuery.getNewQuery(boostedComplexQuery, queryParser);
        queryParsed = boostedComplexQuery.toString();
        return boostedComplexQuery;
    } finally {
        rwl.w.unlock();
    }
}

From source file:com.jaeksoft.searchlib.request.SearchField.java

License:Open Source License

final private Query getTermQuery(final List<TermQueryItem> termQueryItems, final Occur occur)
        throws IOException {
    BooleanQuery booleanQuery = new BooleanQuery();
    for (TermQueryItem termQueryItem : termQueryItems)
        if (termQueryItem.parent == null)
            booleanQuery.add(termQueryItem.getQuery(null, occur), occur);
    return booleanQuery;
}

From source file:com.jaeksoft.searchlib.request.SearchFieldRequest.java

License:Open Source License

final private static Query getBooleanShouldQuery(Collection<Query> queries) {
    if (queries == null)
        return null;
    switch (queries.size()) {
    case 1:// w  w  w .ja  v a  2 s .  c  o m
        return queries.iterator().next();
    default:
        BooleanQuery booleanQuery = new BooleanQuery();
        for (Query query : queries)
            booleanQuery.add(query, Occur.SHOULD);
        return booleanQuery;
    }
}

From source file:com.jaeksoft.searchlib.request.SearchFieldRequest.java

License:Open Source License

final private static Query getBooleanMustQuery(final Map<Integer, List<Query>> queriesMap) {
    switch (queriesMap.size()) {
    case 0:/*  w  ww .j a va  2  s . c  om*/
        return null;
    case 1:
        return getBooleanShouldQuery(queriesMap.values().iterator().next());
    default:
        BooleanQuery booleanQuery = new BooleanQuery();
        for (Collection<Query> queries : queriesMap.values())
            booleanQuery.add(getBooleanShouldQuery(queries), Occur.MUST);
        return booleanQuery;
    }
}

From source file:com.jboss.datagrid.carmart.session.CarManager.java

License:Open Source License

public String search() {
    carCache = provider.getCacheContainer().getCache(CAR_CACHE_NAME);
    SearchManager sm = Search.getSearchManager((Cache) carCache);

    //       //match any of the parameters----------------------------------------------------------------
    //       QueryBuilder queryBuilder = sm.buildQueryBuilderForClass(Car.class).get();
    //       Query q1 = queryBuilder
    //                     .bool()
    //                        .should(queryBuilder.keyword().onFields("brand")
    //                                .matching(car.getBrand().isEmpty() ? "none" : car.getBrand())
    //                                .createQuery())
    //                        .should(queryBuilder.keyword().onFields("color")
    //                                .matching(car.getColor().isEmpty() ? "none" : car.getColor())
    //                                .createQuery())
    //                        .should(queryBuilder.keyword().onFields("country")
    //                                .matching(car.getCountry())
    //                                .createQuery())
    //                     .createQuery();
    //       System.out.println("Lucene Query: " + q1.toString() ); //printing out raw Lucene query

    //match all the parameters----------------------------------------------------------------------
    BooleanQuery q2 = new BooleanQuery();

    if (!car.getBrand().isEmpty()) {
        Query query = new TermQuery(new Term("brand", car.getBrand().toLowerCase()));
        q2.add(query, BooleanClause.Occur.MUST);
    }//from   w ww  .j a  va2  s  .c o  m
    if (!car.getColor().isEmpty()) {
        Query query = new TermQuery(new Term("color", car.getColor().toLowerCase()));
        q2.add(query, BooleanClause.Occur.MUST);
    }
    if (!car.getCountry().equals(Car.Country.Unused)) {
        Query query = new TermQuery(new Term("country", car.getCountry().toString().toLowerCase()));
        q2.add(query, BooleanClause.Occur.MUST);
    }
    System.out.println("Lucene Query: " + q2.toString()); //printing out raw Lucene query

    //create a cache query based on the Lucene query
    CacheQuery cq = sm.getQuery(q2, Car.class);
    searchResults = new ArrayList<Car>();
    //invoke the cache query
    for (Object o : cq.list()) {
        if (o instanceof Car) {
            searchResults.add(((Car) o));
        }
    }
    return "searchresults";
}

From source file:com.jivesoftware.forum.database.DbQuery.java

License:Open Source License

/**
 * Execute the query and store the results in the results array.
 *//*from w ww .java2s .  co m*/
private void executeQuery() {
    try {
        Searcher searcher = getSearcher();
        if (searcher == null) {
            // Searcher can be null if the index doesn't exist.
            results = new long[0];
            return;
        }

        org.apache.lucene.search.Query bodyQuery = QueryParser.parse(queryString, "body",
                DbSearchManager.analyzer);

        org.apache.lucene.search.Query subjectQuery = QueryParser.parse(queryString, "subject",
                DbSearchManager.analyzer);

        BooleanQuery comboQuery = new BooleanQuery();
        comboQuery.add(subjectQuery, false, false);
        comboQuery.add(bodyQuery, false, false);

        MultiFilter multiFilter = new MultiFilter(3);
        int filterCount = 0;

        // Forum filter -- we can ignore filtering if we are searching all
        // forums in the system.
        if (factory.getForumCount() != forums.length) {
            String[] forumIDs = new String[forums.length];
            for (int i = 0; i < forumIDs.length; i++) {
                forumIDs[i] = Long.toString(forums[i].getID());
            }
            multiFilter.add(new FieldFilter("forumID", forumIDs));
            filterCount++;
        }

        //Date filter
        if (beforeDate != null || afterDate != null) {
            if (beforeDate != null && afterDate != null) {
                multiFilter.add(new DateFilter("creationDate", beforeDate, afterDate));
                filterCount++;
            } else if (beforeDate == null) {
                multiFilter.add(DateFilter.After("creationDate", afterDate));
                filterCount++;
            } else {
                multiFilter.add(DateFilter.Before("creationDate", beforeDate));
                filterCount++;
            }
        }

        // User filter
        if (user != null) {
            String userID = Long.toString(user.getID());
            multiFilter.add(new FieldFilter("userID", userID));
            filterCount++;
        }

        // Thread filter
        if (thread != null) {
            String threadID = Long.toString(thread.getID());
            multiFilter.add(new FieldFilter("threadID", threadID));
            filterCount++;
        }

        Hits hits;
        // Only apply filters if any are defined.
        if (filterCount > 0) {
            hits = searcher.search(comboQuery, multiFilter);
        } else {
            hits = searcher.search(comboQuery);
        }
        // Don't return more search results than the maximum number allowed.
        int numResults = hits.length() < MAX_RESULTS_SIZE ? hits.length() : MAX_RESULTS_SIZE;
        long[] messages = new long[numResults];
        for (int i = 0; i < numResults; i++) {
            messages[i] = Long.parseLong(((Document) hits.doc(i)).get("messageID"));
        }
        results = messages;
    } catch (Exception e) {
        e.printStackTrace();
        results = new long[0];
    }
}

From source file:com.kanjiportal.portal.dao.jpa.JpaDictionaryDao.java

License:Open Source License

public List<Dictionary> searchDictionaryByPattern(String pattern, String language, int page, int pageSize)
        throws SearchTooGenericException {
    FullTextEntityManager ftem = (FullTextEntityManager) entityManager;
    BooleanQuery finalQuery = new BooleanQuery();
    org.apache.lucene.search.Query languageQuery = null;
    org.apache.lucene.search.Query luceneQuery = buildLuceneQuery(pattern, language);

    List<Dictionary> res = null;

    languageQuery = new TermQuery(new Term("translations.language.codeIso63901", language));
    finalQuery.add(luceneQuery, BooleanClause.Occur.MUST);
    finalQuery.add(languageQuery, BooleanClause.Occur.MUST);

    try {/*from   w w  w. ja  v a  2s  . co  m*/
        res = ftem.createFullTextQuery(finalQuery, Dictionary.class).setMaxResults(pageSize)
                .setFirstResult(page * pageSize).getResultList();
    } catch (BooleanQuery.TooManyClauses e) {
        throw new SearchTooGenericException(e);
    }

    return res;
}