List of usage examples for org.apache.lucene.search BooleanQuery BooleanQuery
BooleanQuery
From source file:de.blizzy.documentr.search.GetVisibleBranchDocIdsTask.java
License:Open Source License
@Override public BitSet call() throws IOException { List<String> branches = Lists .newArrayList(permissionEvaluator.getBranchesForPermission(authentication, Permission.VIEW)); if (!branches.isEmpty()) { Collections.sort(branches); BooleanQuery allBranchesQuery = new BooleanQuery(); for (String projectAndBranch : branches) { String projectName = StringUtils.substringBefore(projectAndBranch, "/"); //$NON-NLS-1$ String branchName = StringUtils.substringAfter(projectAndBranch, "/"); //$NON-NLS-1$ TermQuery projectQuery = new TermQuery(new Term(PageIndex.PROJECT, projectName)); TermQuery branchQuery = new TermQuery(new Term(PageIndex.BRANCH, branchName)); BooleanQuery projectAndBranchQuery = new BooleanQuery(); projectAndBranchQuery.add(projectQuery, BooleanClause.Occur.MUST); projectAndBranchQuery.add(branchQuery, BooleanClause.Occur.MUST); allBranchesQuery.add(projectAndBranchQuery, BooleanClause.Occur.SHOULD); }/* w w w .j a v a 2s . c om*/ AbstractDocIdsCollector collector = new AllDocIdsCollector(); searcher.search(allBranchesQuery, collector); return collector.getDocIds(); } else { return new BitSet(1); } }
From source file:de.blizzy.documentr.search.GetVisibleBranchDocIdsTaskTest.java
License:Open Source License
@Test public void call() throws IOException { List<String> branches = Lists.newArrayList("project1/branch1", "project1/branch2", "project2/branch"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ when(permissionEvaluator.getBranchesForPermission(authentication, Permission.VIEW)) .thenReturn(Sets.newHashSet(branches)); BooleanQuery query = new BooleanQuery(); for (String projectAndBranch : branches) { BooleanQuery q = new BooleanQuery(); String projectName = StringUtils.substringBefore(projectAndBranch, "/"); //$NON-NLS-1$ String branchName = StringUtils.substringAfter(projectAndBranch, "/"); //$NON-NLS-1$ q.add(new TermQuery(new Term(PageIndex.PROJECT, projectName)), BooleanClause.Occur.MUST); q.add(new TermQuery(new Term(PageIndex.BRANCH, branchName)), BooleanClause.Occur.MUST); query.add(q, BooleanClause.Occur.SHOULD); }/*w w w .j a va2 s. c o m*/ task.call(); verify(searcher).search(eq(query), Matchers.any(AllDocIdsCollector.class)); }
From source file:de.blizzy.documentr.search.ParseQueryTaskTest.java
License:Open Source License
@Test public void call() throws ParseException { ParseQueryTask task = new ParseQueryTask("+foo -bar", analyzer); //$NON-NLS-1$ Query result = task.call();/*from ww w. ja v a 2 s.c o m*/ BooleanQuery query = new BooleanQuery(); query.add(new TermQuery(new Term(PageIndex.ALL_TEXT, "foo")), BooleanClause.Occur.MUST); //$NON-NLS-1$ query.add(new TermQuery(new Term(PageIndex.ALL_TEXT, "bar")), BooleanClause.Occur.MUST_NOT); //$NON-NLS-1$ assertEquals(query, result); }
From source file:de.citec.lucene.SearchIndex.java
public Map<String, List<String>> runStrictSearch(List<String> terms, int top_k, boolean onlypersons) throws IOException { Set<String> cache = new HashSet<>(); Map<String, List<String>> wikipedia_entries = new HashMap(); try {//w ww . ja v a 2 s. c o m //Generate Boolean query out of term BooleanQuery booleanQuery = new BooleanQuery(); for (String term : terms) { booleanQuery.add( new QueryParser("text", analyzer).parse("\"" + term.toLowerCase().replace(" ", "_") + "\""), BooleanClause.Occur.SHOULD); } if (onlypersons) { booleanQuery.add(new QueryParser("persons", analyzer).parse("1"), BooleanClause.Occur.MUST); wikipedia_entries.putAll(runSearch(top_k, booleanQuery)); } else { wikipedia_entries.putAll(runSearch(top_k, booleanQuery)); booleanQuery.add(new QueryParser("persons", analyzer).parse("1"), BooleanClause.Occur.MUST); wikipedia_entries.putAll(runSearch(top_k, booleanQuery)); } } catch (Exception e) { } return wikipedia_entries; }
From source file:de.cosmocode.lucene.DirectApiLuceneQuery.java
License:Apache License
public DirectApiLuceneQuery(String defaultField, Analyzer analyzer) { this.defaultField = defaultField; this.analyzer = analyzer; this.topQuery = new BooleanQuery(); this.currentField = defaultField; }
From source file:de.cosmocode.lucene.DirectApiLuceneQuery.java
License:Apache License
private Query createMultiQuery(Iterable<?> values, QueryModifier modifier) { final BooleanQuery multiQuery = new BooleanQuery(); final QueryModifier valueModifier = modifier.getMultiValueModifier(); final Occur occur = TermModifierToOccur.INSTANCE.apply(valueModifier.getTermModifier()); for (Object value : values) { if (value != null) { multiQuery.add(createQuery(value, valueModifier), occur); }/*from ww w . j a va2 s .co m*/ } return multiQuery; }
From source file:de.cosmocode.lucene.DirectApiLuceneQuery.java
License:Apache License
private Query createMultiQueryFromArray(Object values, QueryModifier modifier) { final BooleanQuery multiQuery = new BooleanQuery(); final QueryModifier valueModifier = modifier.getMultiValueModifier(); final Occur occur = TermModifierToOccur.INSTANCE.apply(valueModifier.getTermModifier()); final int arrayLength = Array.getLength(values); // add all items for (int i = 0; i < arrayLength; i++) { final Object value = Array.get(values, i); if (value != null) { multiQuery.add(createQuery(value, valueModifier), occur); }//from w w w .j a v a 2 s . co m } return multiQuery; }
From source file:de.csw.linkgenerator.plugin.lucene.LucenePlugin.java
License:Open Source License
/** * @param query//from w w w . jav a 2s . c om * @param virtualWikiNames comma separated list of virtual wiki names * @param languages comma separated list of language codes to search in, may be null to search * all languages */ private Query buildQuery(String query, String virtualWikiNames, String languages) throws org.apache.lucene.queryparser.classic.ParseException { // build a query like this: <user query string> AND <wikiNamesQuery> AND // <languageQuery> BooleanQuery bQuery = new BooleanQuery(); Query parsedQuery = null; // for object search if (query.startsWith("PROP ")) { String property = query.substring(0, query.indexOf(":")); query = query.substring(query.indexOf(":") + 1, query.length()); QueryParser qp = new QueryParser(Version.LUCENE_40, property, analyzer); parsedQuery = qp.parse(query); bQuery.add(parsedQuery, BooleanClause.Occur.MUST); } else if (query.startsWith("MULTI ")) { // for fulltext search List<String> fieldList = IndexUpdater.fields; String[] fields = fieldList.toArray(new String[fieldList.size()]); BooleanClause.Occur[] flags = new BooleanClause.Occur[fields.length]; for (int i = 0; i < flags.length; i++) { flags[i] = BooleanClause.Occur.SHOULD; } parsedQuery = MultiFieldQueryParser.parse(Version.LUCENE_40, query, fields, flags, analyzer); bQuery.add(parsedQuery, BooleanClause.Occur.MUST); } else { QueryParser qp = new QueryParser(Version.LUCENE_40, "ft", analyzer); parsedQuery = qp.parse(query); bQuery.add(parsedQuery, BooleanClause.Occur.MUST); } if (virtualWikiNames != null && virtualWikiNames.length() > 0) { bQuery.add(buildOredTermQuery(virtualWikiNames, IndexFields.DOCUMENT_WIKI), BooleanClause.Occur.MUST); } if (languages != null && languages.length() > 0) { bQuery.add(buildOredTermQuery(languages, IndexFields.DOCUMENT_LANGUAGE), BooleanClause.Occur.SHOULD); } return bQuery; }
From source file:de.faustedition.document.Document.java
License:Open Source License
public static Iterable<Document> find(GraphDatabaseService db, String id) { // query by idno final BooleanQuery idQuery = new BooleanQuery(); idQuery.add(new WildcardQuery(new Term(ALL_IDNOS_KEY, id)), BooleanClause.Occur.SHOULD); idQuery.add(new WildcardQuery(new Term(WA_ID_KEY, id)), BooleanClause.Occur.SHOULD); idQuery.add(new WildcardQuery(new Term(URI_PART_KEY, id)), BooleanClause.Occur.SHOULD); IndexHits<Node> idResults = db.index().forNodes(INDEX_ID).query(idQuery); return Iterables.transform(idResults, newWrapperFunction(Document.class)); }
From source file:de.faustedition.genesis.lines.VerseManager.java
License:Open Source License
public Iterable<GraphVerseInterval> forInterval(VerseInterval verseInterval) { // find all intervals for which start < verseInterval.getEnd() and end > verseInterval.getStart() Index<Node> verseIndex = faustGraph.getDb().index().forNodes(INDEX_VERSE_INTERVAL); BooleanQuery andQuery = new BooleanQuery(); NumericRangeQuery<Integer> startQuery = NumericRangeQuery.newIntRange("start", 0, verseInterval.getEnd(), true, true);/* ww w . ja v a2 s . co m*/ NumericRangeQuery<Integer> endQuery = NumericRangeQuery.newIntRange("end", verseInterval.getStart(), Integer.MAX_VALUE, true, true); andQuery.add(startQuery, BooleanClause.Occur.MUST); andQuery.add(endQuery, BooleanClause.Occur.MUST); IndexHits<Node> resultNodes = verseIndex.query(andQuery); Function<Node, GraphVerseInterval> verseIntervalForNode = new Function<Node, GraphVerseInterval>() { @Override public GraphVerseInterval apply(@Nullable Node input) { return new GraphVerseInterval(input); } }; return Iterables.transform(resultNodes, verseIntervalForNode); }