List of usage examples for org.apache.lucene.search BooleanQuery setMaxClauseCount
public static void setMaxClauseCount(int maxClauseCount)
From source file:org.easynet.resource.queryparser.QueryParserTestBase.java
License:Apache License
public void testBooleanQuery() throws Exception { BooleanQuery.setMaxClauseCount(2); Analyzer purWhitespaceAnalyzer = new MockAnalyzer(random(), MockTokenizer.WHITESPACE, false); assertParseException("one two three", purWhitespaceAnalyzer); }
From source file:org.easynet.resource.queryparser.QueryParserTestBase.java
License:Apache License
@After public void tearDown() throws Exception { BooleanQuery.setMaxClauseCount(originalMaxClauses); }
From source file:org.ebayopensource.turmeric.eclipse.mavenapi.impl.MavenEclipseApi.java
License:Open Source License
/** * according to artifact name,group and repository url ,to search artifact. * It supports wildcard./* w w w . j a v a 2 s .c om*/ * * @param name the artifact name, can include wildcards * @param group the group id, can include wildcards * @param repositoryUrl a repository url location * @return a collection of artifacts that matched the query * @throws MavenEclipseApiException the maven eclipse api exception */ public Collection<Artifact> findArtifactByNameAndGroupAndRepositoryUrl(String name, String group, String repositoryUrl) throws MavenEclipseApiException { Collection<ArtifactMetadata> ams = null; try { BooleanQuery bq = new BooleanQuery(); BooleanQuery.setMaxClauseCount(Integer.MAX_VALUE); Query query = null; if (StringUtils.isNotBlank(name)) { bq.add(new WildcardQuery(new Term(ArtifactInfo.ARTIFACT_ID, name.toLowerCase())), Occur.MUST); } else { bq.add(new WildcardQuery(new Term(ArtifactInfo.ARTIFACT_ID, "*")), Occur.MUST); } if (StringUtils.isNotBlank(group)) { bq.add(new WildcardQuery(new Term(ArtifactInfo.GROUP_ID, group.toLowerCase())), Occur.MUST); } else { bq.add(new WildcardQuery(new Term(ArtifactInfo.GROUP_ID, "*")), Occur.MUST); } RepositoryInfo repository = new RepositoryInfo(null, repositoryUrl, IRepositoryRegistry.SCOPE_UNKNOWN, null); final Map<String, IndexedArtifact> results = ((NexusIndexManager) _getIndexManager()).search(repository, bq); ams = _returnFindings(results); } catch (final CoreException e) { throw new MavenEclipseApiException(e); } return _toArtifactCollection(ams); }
From source file:org.eclipse.smila.search.lucene.index.IndexConnection.java
License:Open Source License
/** * The Constructor./*from www . j a va2 s. co m*/ * * @param indexName * Index name. * * @throws IndexException * Unable to create index connection. */ public IndexConnection(final String indexName) throws IndexException { super(indexName); try { // store index structure from data dictionary _index = DataDictionaryController.getIndex(indexName); } catch (final DataDictionaryException e) { throw new IndexException(e.getMessage(), e); } if (_index == null) { throw new IndexException("index not in data dictionary [" + indexName + "]"); } try { // TODO: add parameter final String maxClauseCountString = "4096"; // ConfigManager.getString(ConfigBuilder.MAX_CLAUSE_COUNT); final int maxClauseCount = Integer.parseInt(maxClauseCountString); BooleanQuery.setMaxClauseCount(maxClauseCount); } catch (final NumberFormatException ex) { _log.error("unable to set BooleanQuery max clause count. using default value", ex); } _indexName = indexName; try { final File dataFolder = WorkspaceHelper.createWorkingDir(LuceneService.BUNDLE_NAME, indexName); _indexStore = dataFolder.getAbsolutePath(); } catch (final IOException e) { if (_log.isErrorEnabled()) { _log.error("", e); } throw new IndexException(e); } // prepare analyzer _analyzer = AnalyzerFactory.getAnalyzer(_index); }
From source file:org.elasticsearch.index.query.BoolQueryParser.java
License:Apache License
@Inject public BoolQueryParser(Settings settings) { BooleanQuery.setMaxClauseCount(settings.getAsInt("index.query.bool.max_clause_count", settings.getAsInt("indices.query.bool.max_clause_count", BooleanQuery.getMaxClauseCount()))); }
From source file:org.elasticsearch.index.query.xcontent.BoolQueryParser.java
License:Apache License
@Inject public BoolQueryParser(Index index, @IndexSettings Settings settings) { super(index, settings); BooleanQuery.setMaxClauseCount( settings.getAsInt("index.query.bool.max_clause_count", BooleanQuery.getMaxClauseCount())); }
From source file:org.elasticsearch.search.SearchModule.java
License:Apache License
private void registerQueryParsers(List<SearchPlugin> plugins) { registerQuery(new QuerySpec<>(MatchQueryBuilder.QUERY_NAME_FIELD, MatchQueryBuilder::new, MatchQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(MatchPhraseQueryBuilder.NAME, MatchPhraseQueryBuilder::new, MatchPhraseQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(MatchPhrasePrefixQueryBuilder.NAME, MatchPhrasePrefixQueryBuilder::new, MatchPhrasePrefixQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(MultiMatchQueryBuilder.NAME, MultiMatchQueryBuilder::new, MultiMatchQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(NestedQueryBuilder.NAME, NestedQueryBuilder::new, NestedQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(HasChildQueryBuilder.NAME, HasChildQueryBuilder::new, HasChildQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(HasParentQueryBuilder.NAME, HasParentQueryBuilder::new, HasParentQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(DisMaxQueryBuilder.NAME, DisMaxQueryBuilder::new, DisMaxQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(IdsQueryBuilder.NAME, IdsQueryBuilder::new, IdsQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(MatchAllQueryBuilder.NAME, MatchAllQueryBuilder::new, MatchAllQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(QueryStringQueryBuilder.NAME, QueryStringQueryBuilder::new, QueryStringQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(BoostingQueryBuilder.NAME, BoostingQueryBuilder::new, BoostingQueryBuilder::fromXContent)); BooleanQuery.setMaxClauseCount(INDICES_MAX_CLAUSE_COUNT_SETTING.get(settings)); registerQuery(//from w w w . jav a 2 s. c o m new QuerySpec<>(BoolQueryBuilder.NAME, BoolQueryBuilder::new, BoolQueryBuilder::fromXContent)); registerQuery( new QuerySpec<>(TermQueryBuilder.NAME, TermQueryBuilder::new, TermQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(TermsQueryBuilder.QUERY_NAME_FIELD, TermsQueryBuilder::new, TermsQueryBuilder::fromXContent)); registerQuery( new QuerySpec<>(FuzzyQueryBuilder.NAME, FuzzyQueryBuilder::new, FuzzyQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(RegexpQueryBuilder.NAME, RegexpQueryBuilder::new, RegexpQueryBuilder::fromXContent)); registerQuery( new QuerySpec<>(RangeQueryBuilder.NAME, RangeQueryBuilder::new, RangeQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(PrefixQueryBuilder.NAME, PrefixQueryBuilder::new, PrefixQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(WildcardQueryBuilder.NAME, WildcardQueryBuilder::new, WildcardQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(ConstantScoreQueryBuilder.NAME, ConstantScoreQueryBuilder::new, ConstantScoreQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(SpanTermQueryBuilder.NAME, SpanTermQueryBuilder::new, SpanTermQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(SpanNotQueryBuilder.NAME, SpanNotQueryBuilder::new, SpanNotQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(SpanWithinQueryBuilder.NAME, SpanWithinQueryBuilder::new, SpanWithinQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(SpanContainingQueryBuilder.NAME, SpanContainingQueryBuilder::new, SpanContainingQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(FieldMaskingSpanQueryBuilder.NAME, FieldMaskingSpanQueryBuilder::new, FieldMaskingSpanQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(SpanFirstQueryBuilder.NAME, SpanFirstQueryBuilder::new, SpanFirstQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(SpanNearQueryBuilder.NAME, SpanNearQueryBuilder::new, SpanNearQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(SpanOrQueryBuilder.NAME, SpanOrQueryBuilder::new, SpanOrQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(MoreLikeThisQueryBuilder.QUERY_NAME_FIELD, MoreLikeThisQueryBuilder::new, MoreLikeThisQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(WrapperQueryBuilder.NAME, WrapperQueryBuilder::new, WrapperQueryBuilder::fromXContent)); // TODO Remove IndicesQuery in 6.0 registerQuery(new QuerySpec<>(IndicesQueryBuilder.NAME, IndicesQueryBuilder::new, IndicesQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(CommonTermsQueryBuilder.NAME, CommonTermsQueryBuilder::new, CommonTermsQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(SpanMultiTermQueryBuilder.NAME, SpanMultiTermQueryBuilder::new, SpanMultiTermQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(FunctionScoreQueryBuilder.NAME, FunctionScoreQueryBuilder::new, c -> FunctionScoreQueryBuilder.fromXContent(scoreFunctionParserRegistry, c))); registerQuery(new QuerySpec<>(SimpleQueryStringBuilder.NAME, SimpleQueryStringBuilder::new, SimpleQueryStringBuilder::fromXContent)); registerQuery( new QuerySpec<>(TypeQueryBuilder.NAME, TypeQueryBuilder::new, TypeQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(ScriptQueryBuilder.NAME, ScriptQueryBuilder::new, ScriptQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(GeoDistanceQueryBuilder.NAME, GeoDistanceQueryBuilder::new, GeoDistanceQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(GeoDistanceRangeQueryBuilder.NAME, GeoDistanceRangeQueryBuilder::new, GeoDistanceRangeQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(GeoBoundingBoxQueryBuilder.QUERY_NAME_FIELD, GeoBoundingBoxQueryBuilder::new, GeoBoundingBoxQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(GeohashCellQuery.NAME, GeohashCellQuery.Builder::new, GeohashCellQuery.Builder::fromXContent)); registerQuery(new QuerySpec<>(GeoPolygonQueryBuilder.NAME, GeoPolygonQueryBuilder::new, GeoPolygonQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(ExistsQueryBuilder.NAME, ExistsQueryBuilder::new, ExistsQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(MatchNoneQueryBuilder.NAME, MatchNoneQueryBuilder::new, MatchNoneQueryBuilder::fromXContent)); registerQuery(new QuerySpec<>(ParentIdQueryBuilder.NAME, ParentIdQueryBuilder::new, ParentIdQueryBuilder::fromXContent)); if (ShapesAvailability.JTS_AVAILABLE && ShapesAvailability.SPATIAL4J_AVAILABLE) { registerQuery(new QuerySpec<>(GeoShapeQueryBuilder.NAME, GeoShapeQueryBuilder::new, GeoShapeQueryBuilder::fromXContent)); } registerFromPlugin(plugins, SearchPlugin::getQueries, this::registerQuery); }
From source file:org.eu.bitzone.Leia.java
License:Apache License
/** * Create a Query instance that corresponds to values selected in the UI, such as analyzer class name and arguments, * and default field./* w w w. j ava 2s .com*/ * * @return */ public Query createQuery(final String queryString) throws Exception { final Object srchOpts = find("srchOptTabs"); final Analyzer analyzer = createAnalyzer(srchOpts); if (analyzer == null) { return null; } final String defField = getDefaultField(srchOpts); final QueryParser qp = new QueryParser(Version.LUCENE_CURRENT, defField, analyzer); final Object ckXmlParser = find(srchOpts, "ckXmlParser"); final Object ckWild = find(srchOpts, "ckWild"); final Object ckPosIncr = find(srchOpts, "ckPosIncr"); final Object ckLoExp = find(srchOpts, "ckLoExp"); final Object cbDateRes = find(srchOpts, "cbDateRes"); final DateTools.Resolution resolution = Util.getResolution(getString(cbDateRes, "text")); final Object cbOp = find(srchOpts, "cbOp"); final Object bqMaxCount = find(srchOpts, "bqMaxCount"); int maxCount = 1024; try { maxCount = Integer.parseInt(getString(bqMaxCount, "text")); } catch (final Exception e) { e.printStackTrace(); showStatus("Invalid BooleanQuery max clause count, using default 1024"); } QueryParser.Operator op; BooleanQuery.setMaxClauseCount(maxCount); final String opString = getString(cbOp, "text"); if (opString.equalsIgnoreCase("OR")) { op = QueryParserBase.OR_OPERATOR; } else { op = QueryParserBase.AND_OPERATOR; } qp.setAllowLeadingWildcard(getBoolean(ckWild, "selected")); qp.setEnablePositionIncrements(getBoolean(ckPosIncr, "selected")); qp.setLowercaseExpandedTerms(getBoolean(ckLoExp, "selected")); qp.setDateResolution(resolution); qp.setDefaultOperator(op); if (getBoolean(ckXmlParser, "selected")) { final CoreParser cp = createParser(defField, analyzer); final Query q = cp.parse(new ByteArrayInputStream(queryString.getBytes("UTF-8"))); return q; } else { return qp.parse(queryString); } }
From source file:org.exoplatform.services.jcr.impl.core.query.SearchManager.java
License:Apache License
/** * Return set of uuid of nodes. Contains in names prefixes maped to the * given uri// w w w.java2s . c o m * * @param prefix * @return * @throws RepositoryException */ public Set<String> getNodesByUri(final String uri) throws RepositoryException { Set<String> result; final int defaultClauseCount = BooleanQuery.getMaxClauseCount(); try { // final LocationFactory locationFactory = new // LocationFactory(this); final ValueFactoryImpl valueFactory = new ValueFactoryImpl(new LocationFactory(nsReg), cleanerHolder); BooleanQuery.setMaxClauseCount(Integer.MAX_VALUE); BooleanQuery query = new BooleanQuery(); final String prefix = nsReg.getNamespacePrefixByURI(uri); query.add(new WildcardQuery(new Term(FieldNames.LABEL, prefix + ":*")), Occur.SHOULD); // name of the property query.add(new WildcardQuery(new Term(FieldNames.PROPERTIES_SET, prefix + ":*")), Occur.SHOULD); result = getNodes(query); // value of the property try { final Set<String> props = getFieldNames(); query = new BooleanQuery(); for (final String fieldName : props) { if (!FieldNames.PROPERTIES_SET.equals(fieldName)) { query.add(new WildcardQuery(new Term(fieldName, "*" + prefix + ":*")), Occur.SHOULD); } } } catch (final IndexException e) { throw new RepositoryException(e.getLocalizedMessage(), e); } final Set<String> propSet = getNodes(query); // Manually check property values; for (final String uuid : propSet) { if (isPrefixMatch(valueFactory, uuid, prefix)) { result.add(uuid); } } } finally { BooleanQuery.setMaxClauseCount(defaultClauseCount); } return result; }
From source file:org.fao.geonet.kernel.search.LuceneSearcher.java
License:Open Source License
/** * Makes a new lucene query.//from w ww.j ava 2 s. c o m * * If the field to be queried is tokenized then this method applies * the appropriate analyzer (see SearchManager) to the field. * * @param xmlQuery * @param analyzer * @param tokenizedFieldSet * @param numericFieldSet * @return * @throws Exception */ @SuppressWarnings({ "deprecation" }) private static Query makeQuery(Element xmlQuery, PerFieldAnalyzerWrapper analyzer, Set<String> tokenizedFieldSet, Map<String, LuceneConfigNumericField> numericFieldSet) throws Exception { if (Log.isDebugEnabled(Geonet.SEARCH_ENGINE)) Log.debug(Geonet.SEARCH_ENGINE, "MakeQuery input XML:\n" + Xml.getString(xmlQuery)); String name = xmlQuery.getName(); Query returnValue; if (name.equals("TermQuery")) { String fld = xmlQuery.getAttributeValue("fld"); returnValue = LuceneSearcher.textFieldToken(xmlQuery.getAttributeValue("txt"), fld, xmlQuery.getAttributeValue("sim"), analyzer, tokenizedFieldSet); } else if (name.equals("FuzzyQuery")) { String fld = xmlQuery.getAttributeValue("fld"); returnValue = LuceneSearcher.textFieldToken(xmlQuery.getAttributeValue("txt"), fld, xmlQuery.getAttributeValue("sim"), analyzer, tokenizedFieldSet); } else if (name.equals("PrefixQuery")) { String fld = xmlQuery.getAttributeValue("fld"); String txt = LuceneSearcher.analyzeQueryText(fld, xmlQuery.getAttributeValue("txt"), analyzer, tokenizedFieldSet); returnValue = new PrefixQuery(new Term(fld, txt)); } else if (name.equals("MatchAllDocsQuery")) { return new MatchAllDocsQuery(); } else if (name.equals("WildcardQuery")) { String fld = xmlQuery.getAttributeValue("fld"); returnValue = LuceneSearcher.textFieldToken(xmlQuery.getAttributeValue("txt"), fld, xmlQuery.getAttributeValue("sim"), analyzer, tokenizedFieldSet); } else if (name.equals("PhraseQuery")) { PhraseQuery query = new PhraseQuery(); for (Object o : xmlQuery.getChildren()) { Element xmlTerm = (Element) o; String fld = xmlTerm.getAttributeValue("fld"); String txt = LuceneSearcher.analyzeQueryText(fld, xmlTerm.getAttributeValue("txt"), analyzer, tokenizedFieldSet); if (txt.length() > 0) { query.add(new Term(fld, txt)); } } returnValue = query; } else if (name.equals("RangeQuery")) { String fld = xmlQuery.getAttributeValue("fld"); String lowerTxt = xmlQuery.getAttributeValue("lowerTxt"); String upperTxt = xmlQuery.getAttributeValue("upperTxt"); String sInclusive = xmlQuery.getAttributeValue("inclusive"); boolean inclusive = "true".equals(sInclusive); LuceneConfigNumericField fieldConfig = numericFieldSet.get(fld); if (fieldConfig != null) { returnValue = LuceneQueryBuilder.buildNumericRangeQueryForType(fld, lowerTxt, upperTxt, inclusive, inclusive, fieldConfig.getType()); } else { lowerTxt = (lowerTxt == null ? null : LuceneSearcher.analyzeQueryText(fld, lowerTxt, analyzer, tokenizedFieldSet)); upperTxt = (upperTxt == null ? null : LuceneSearcher.analyzeQueryText(fld, upperTxt, analyzer, tokenizedFieldSet)); returnValue = new TermRangeQuery(fld, lowerTxt, upperTxt, inclusive, inclusive); } } else if (name.equals("DateRangeQuery")) { String fld = xmlQuery.getAttributeValue("fld"); String lowerTxt = xmlQuery.getAttributeValue("lowerTxt"); String upperTxt = xmlQuery.getAttributeValue("upperTxt"); String sInclusive = xmlQuery.getAttributeValue("inclusive"); returnValue = new DateRangeQuery(fld, lowerTxt, upperTxt, sInclusive); } else if (name.equals("BooleanQuery")) { BooleanQuery query = new BooleanQuery(); for (Object o : xmlQuery.getChildren()) { Element xmlBooleanClause = (Element) o; String sRequired = xmlBooleanClause.getAttributeValue("required"); String sProhibited = xmlBooleanClause.getAttributeValue("prohibited"); boolean required = sRequired != null && sRequired.equals("true"); boolean prohibited = sProhibited != null && sProhibited.equals("true"); BooleanClause.Occur occur = LuceneUtils.convertRequiredAndProhibitedToOccur(required, prohibited); @SuppressWarnings(value = "unchecked") List<Element> subQueries = xmlBooleanClause.getChildren(); Element xmlSubQuery; if (subQueries != null && subQueries.size() != 0) { xmlSubQuery = subQueries.get(0); Query subQuery = LuceneSearcher.makeQuery(xmlSubQuery, analyzer, tokenizedFieldSet, numericFieldSet); // If xmlSubQuery contains only a stopword the query produced is null. Protect against this if (subQuery != null) { query.add(subQuery, occur); } } } BooleanQuery.setMaxClauseCount(16384); // FIXME: quick fix; using Filters should be better returnValue = query; } else throw new Exception("unknown lucene query type: " + name); if (Log.isDebugEnabled(Geonet.SEARCH_ENGINE)) Log.debug(Geonet.SEARCH_ENGINE, "Lucene Query: " + ((returnValue != null) ? returnValue.toString() : "")); return returnValue; }