List of usage examples for org.apache.lucene.search BooleanQuery BooleanQuery
BooleanQuery
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; }