List of usage examples for org.apache.lucene.search BooleanQuery clauses
List clauses
To view the source code for org.apache.lucene.search BooleanQuery clauses.
Click Source Link
From source file:com.hrstc.lucene.queryreduction.PatentClassCodeBasedQueryReduction.java
License:Apache License
/** * Performs Rocchio's query expansion with pseudo feedback for each fields * separatlly qm = alpha * query + ( beta / relevanDocsCount ) * Sum ( rel * docs vector )/*w w w.j a v a 2s. c o m*/ * * @param query * * @return expandedQuery * * @throws IOException * @throws ParseException */ @Override public Query expandQuery(PatentQuery query) throws ParseException, IOException { BooleanQuery bQuery = new BooleanQuery(); BooleanQuery bQueryFieldsExpanded = new BooleanQuery(); BooleanQuery.setMaxClauseCount(Integer.MAX_VALUE); //******************************************************************** //**************** Get the sec of definition codes ******************* //******************************************************************** TotalHitCountCollector collector = new TotalHitCountCollector(); Query codesQuery = GenerateClassCodesQuery.generateQuery(query.getFullClassCodes()); // System.err.println(codesQuery); classCodesSearcher.search(codesQuery, collector); IndexReader ir = classCodesSearcher.getIndexReader(); TopDocs hits = classCodesSearcher.search(codesQuery, Math.max(1, collector.getTotalHits())); // Compute PRF set // System.err.println("Found " + hits.totalHits // + " document(s) that matched query '" // + codesQuery + "':"); // for (ScoreDoc scoreDoc : hits.scoreDocs) { // System.out.println("----------"); // Document doc = classCodesSearcher.doc(scoreDoc.doc); // System.out.println(scoreDoc.score + "\t" + doc.get(PatentDocument.Classification) + "\t" + doc.get(PatentDocument.Title));// + "\t" + doc.get("type") + "\t" + doc.get("num") + "\t" + doc.get("lang")); //// System.out.println(explanation.toString()); // } // System.out.println("*************************************"); Query expandedQuery = null; ClassCodeBasedQueryReduction queryExpansion = new ClassCodeBasedQueryReduction(hits, ir, Nbr_Terms); for (int i = 1; i < PatentQuery.getFields().length; i++) { if (query.getQueries()[i] != null && !query.getQueries()[i].equals("") && (i != 4 || i != 6) && query.getBoosts().get(PatentQuery.getFields()[i]) != 0) { QueryParser qp = new QueryParser(Version.LUCENE_48, PatentQuery.getFields()[i], new StandardAnalyzer(Version.LUCENE_48)); BooleanQuery bQueryFields = new BooleanQuery();// Contain a field to make the PRF field by field Query q = qp.parse(query.getQueries()[i]); if (query.isFilter()) { Query filter = new QueryParser(Version.LUCENE_48, PatentQuery.getFields()[0], new StandardAnalyzer(Version.LUCENE_48)).parse(query.getQueries()[0]); bQueryFields.add(filter, BooleanClause.Occur.MUST); } if (!(q instanceof BooleanQuery) || ((BooleanQuery) q).getClauses().length > 0) { bQueryFields.add(q, BooleanClause.Occur.MUST); } // System.err.println(hits.totalHits + " total matching documents for field " + query.getFields()[i] + "."); if (expandedQuery == null) { expandedQuery = queryExpansion.expandQuery(q, PatentQuery.getFields()[i]); } else { BooleanQuery bq = ((BooleanQuery) expandedQuery).clone(); BooleanQuery bq2 = new BooleanQuery(); for (BooleanClause bc : bq.clauses()) { TermQuery tq = (TermQuery) bc.getQuery(); Term term = new Term(PatentQuery.getFields()[i], tq.getTerm().text()); TermQuery tq2 = new TermQuery(term); tq2.setBoost(tq.getBoost()); bq2.add(tq2, BooleanClause.Occur.SHOULD); } expandedQuery = bq2; } bQueryFieldsExpanded.add(expandedQuery, BooleanClause.Occur.SHOULD);// Compute the new expanded query based on PRF set // System.err.println("Expanded Query: " + expandedQuery); // hits = searcher.search(expandedQuery, 100); // System.err.println(hits.totalHits + " total matching documents"+ query.getFields()[i] + "."); } } if (query.isFilter()) { Query q = new QueryParser(Version.LUCENE_48, PatentQuery.getFields()[0], new StandardAnalyzer(Version.LUCENE_48)).parse(query.getQueries()[0]); q.setBoost(query.getBoosts().get(PatentQuery.getFields()[0])); bQuery.add(q, BooleanClause.Occur.MUST); } bQuery.add(bQueryFieldsExpanded, BooleanClause.Occur.MUST); // hits = searcher.search(bQuery, 100); // System.err.println(hits.totalHits + " total matching documents."); return bQuery; }
From source file:com.hrstc.lucene.queryreduction.PatentRocchioQueryReduction.java
License:Apache License
/** * Performs Rocchio's query expansion with pseudo feedback for each fields * separatlly qm = alpha * query + ( beta / relevanDocsCount ) * Sum ( rel * docs vector )/*from w w w. ja va 2s . c o m*/ * * @param query * * @return expandedQuery * * @throws IOException * @throws ParseException */ @Override public Query expandQuery(PatentQuery query) throws ParseException, IOException { BooleanQuery bQuery = new BooleanQuery(); BooleanQuery bQueryFieldsExpanded = new BooleanQuery(); BooleanQuery.setMaxClauseCount(Integer.MAX_VALUE); //***************************************************************** //**************** Compute the PRF for field (i)******************* //***************************************************************** TotalHitCountCollector collector = new TotalHitCountCollector(); searcher.search(query.parse(), collector); IndexReader ir = searcher.getIndexReader(); TopDocs hits = searcher.search(query.parse(), Math.max(1, collector.getTotalHits())); // Compute PRF set // System.err.println(hits.totalHits + " total matching documents for field " + query.getFields()[i] + "."); Query expandedQuery = null; RocchioQueryReduction queryExpansion = new RocchioQueryReduction(hits, ir, parameters, source, Nbr_Docs, Nbr_Terms); for (int i = 1; i < PatentQuery.getFields().length; i++) { if (query.getQueries()[i] != null && !query.getQueries()[i].equals("") && (i != 4 || i != 6) && query.getBoosts().get(PatentQuery.getFields()[i]) != 0) { QueryParser qp = new QueryParser(Version.LUCENE_48, PatentQuery.getFields()[i], new StandardAnalyzer(Version.LUCENE_48)); // BooleanQuery bQueryFields = new BooleanQuery();// Contain a field to make the PRF field by field Query q = qp.parse(query.getQueries()[i]); // if (query.isFilter()) { // Query filter = new QueryParser(Version.LUCENE_48, PatentQuery.getFields()[0], // new StandardAnalyzer(Version.LUCENE_48)).parse(query.getQueries()[0]); // bQueryFields.add(filter, BooleanClause.Occur.MUST); // } // if (!(q instanceof BooleanQuery) || ((BooleanQuery) q).getClauses().length > 0) { // bQueryFields.add(q, BooleanClause.Occur.MUST); // } if (expandedQuery == null) { expandedQuery = queryExpansion.reduceQuery(q, PatentQuery.getFields()[i]); } else { BooleanQuery bq = ((BooleanQuery) expandedQuery).clone(); BooleanQuery bq2 = new BooleanQuery(); for (BooleanClause bc : bq.clauses()) { TermQuery tq = (TermQuery) bc.getQuery(); Term term = new Term(PatentQuery.getFields()[i], tq.getTerm().text()); TermQuery tq2 = new TermQuery(term); tq2.setBoost(tq.getBoost()); bq2.add(tq2, BooleanClause.Occur.SHOULD); } expandedQuery = bq2; } bQueryFieldsExpanded.add(expandedQuery, BooleanClause.Occur.SHOULD);// Compute the new expanded query based on PRF set // System.err.println("Expanded Query: " + expandedQuery); // hits = searcher.search(expandedQuery, 100); // System.err.println(hits.totalHits + " total matching documents"+ query.getFields()[i] + "."); } } if (query.isFilter()) { Query q = new QueryParser(Version.LUCENE_48, PatentQuery.getFields()[0], new StandardAnalyzer(Version.LUCENE_48)).parse(query.getQueries()[0]); q.setBoost(query.getBoosts().get(PatentQuery.getFields()[0])); bQuery.add(q, BooleanClause.Occur.MUST); } bQuery.add(bQueryFieldsExpanded, BooleanClause.Occur.MUST); // TopDocs hits = searcher.search(bQuery, 100); // System.err.println(hits.totalHits + " total matching documents."); return bQuery; }
From source file:com.jaeksoft.searchlib.index.osse.query.OsseBooleanQuery.java
License:Open Source License
OsseBooleanQuery(BooleanQuery booleanQuery) throws SearchLibException { clauses = new ArrayList<OsseBooleanClause>(booleanQuery.clauses().size()); for (BooleanClause booleanClause : booleanQuery) clauses.add(new OsseBooleanClause(booleanClause)); }
From source file:com.liferay.portal.search.solr.internal.query.TermQueryTranslatorImpl.java
License:Open Source License
private org.apache.lucene.search.Query _toCaseInsensitiveSubstringQuery( org.apache.lucene.search.BooleanQuery booleanQuery) { org.apache.lucene.search.BooleanQuery newBooleanQuery = new org.apache.lucene.search.BooleanQuery(); List<BooleanClause> clauses = booleanQuery.clauses(); for (BooleanClause booleanClause : clauses) { org.apache.lucene.search.TermQuery termQuery = (org.apache.lucene.search.TermQuery) booleanClause .getQuery();/* www . j a v a 2s . com*/ org.apache.lucene.search.Query query = _toCaseInsensitiveSubstringQuery(termQuery); newBooleanQuery.add(query, booleanClause.getOccur()); } return newBooleanQuery; }
From source file:com.nearinfinity.blur.lucene.search.SuperParser.java
License:Apache License
private Query reprocess(Query query) { if (query == null || !isSuperSearch()) { return wrapFilter(query); }/*from ww w . ja v a 2 s. c o m*/ if (query instanceof BooleanQuery) { BooleanQuery booleanQuery = (BooleanQuery) query; if (isSameGroupName(booleanQuery)) { return newSuperQuery(query); } else { List<BooleanClause> clauses = booleanQuery.clauses(); for (BooleanClause clause : clauses) { clause.setQuery(reprocess(clause.getQuery())); } return booleanQuery; } } else { return newSuperQuery(query); } }
From source file:com.nearinfinity.blur.lucene.search.SuperParser.java
License:Apache License
private boolean isSameGroupName(Query query, String groupName) { if (query instanceof BooleanQuery) { BooleanQuery booleanQuery = (BooleanQuery) query; for (BooleanClause clause : booleanQuery.clauses()) { if (!isSameGroupName(clause.getQuery(), groupName)) { return false; }//from ww w.ja v a2 s . c o m } return true; } else { String fieldName = fieldNames.get(query); String currentGroupName = getGroupName(fieldName); if (groupName.equals(currentGroupName)) { return true; } return false; } }
From source file:com.nearinfinity.blur.lucene.search.SuperParser.java
License:Apache License
private String findFirstGroupName(Query query) { if (query instanceof BooleanQuery) { BooleanQuery booleanQuery = (BooleanQuery) query; for (BooleanClause clause : booleanQuery.clauses()) { return findFirstGroupName(clause.getQuery()); }/* w ww. ja va 2 s. com*/ return null; } else { String fieldName = fieldNames.get(query); return getGroupName(fieldName); } }
From source file:com.recomdata.search.Finder.java
License:Open Source License
private Filter buildFilter(LinkedHashMap<String, ArrayList<String>> filterTerms) { BooleanQuery andQuery = new BooleanQuery(); if (filterTerms.containsKey("REPOSITORY")) { ArrayList<String> list = filterTerms.get("REPOSITORY"); ArrayList<Query> queries = new ArrayList<Query>(); for (String value : list) { Term term = new Term("repository", value); TermQuery termQuery = new TermQuery(term); queries.add(termQuery);//from www. j a va 2 s . c o m } addQueries(andQuery, queries); } if (filterTerms.containsKey("PATH")) { try { ArrayList<String> list = filterTerms.get("PATH"); if (list.size() > 0) { StringReader reader = new StringReader(list.get(0)); StandardAnalyzer analyzer = new StandardAnalyzer(); TokenStream tokenizer = analyzer.tokenStream("path", reader); PhraseQuery phraseQuery = new PhraseQuery(); Token token = new Token(); for (token = tokenizer.next(token); token != null; token = tokenizer.next(token)) { Term term = new Term("path", token.term()); phraseQuery.add(term); } andQuery.add(phraseQuery, BooleanClause.Occur.MUST); } } catch (IOException ex) { // do nothing } } if (filterTerms.containsKey("EXTENSION")) { ArrayList<String> list = filterTerms.get("EXTENSION"); ArrayList<Query> queries = new ArrayList<Query>(); for (String value : list) { Term term = new Term("extension", value.toLowerCase()); TermQuery termQuery = new TermQuery(term); queries.add(termQuery); } addQueries(andQuery, queries); } if (filterTerms.containsKey("NOTEXTENSION")) { ArrayList<String> list = filterTerms.get("NOTEXTENSION"); for (String value : list) { Term term = new Term("extension", value.toLowerCase()); TermQuery termQuery = new TermQuery(term); andQuery.add(termQuery, BooleanClause.Occur.MUST_NOT); } } if (andQuery.clauses().size() > 0) { return new QueryWrapperFilter(andQuery); } return null; }
From source file:com.stratio.cassandra.lucene.IndexServiceWide.java
License:Apache License
/** {@inheritDoc} */ @Override//from w w w . ja v a2s . c om public Optional<Query> query(DataRange dataRange) { // Extract data range data PartitionPosition startPosition = dataRange.startKey(); PartitionPosition stopPosition = dataRange.stopKey(); Token startToken = startPosition.getToken(); Token stopToken = stopPosition.getToken(); Optional<ClusteringPrefix> maybeStartClustering = KeyMapper.startClusteringPrefix(dataRange); Optional<ClusteringPrefix> maybeStopClustering = KeyMapper.stopClusteringPrefix(dataRange); // Prepare query builder BooleanQuery.Builder builder = new BooleanQuery.Builder(); // Add first partition filter maybeStartClustering.ifPresent(startClustering -> { DecoratedKey startKey = (DecoratedKey) startPosition; builder.add(keyMapper.query(startKey, startClustering, null, false, true), SHOULD); }); // Add token range filter boolean includeStart = startPosition.kind() == MIN_BOUND && !maybeStartClustering.isPresent(); boolean includeStop = stopPosition.kind() == MAX_BOUND && !maybeStopClustering.isPresent(); tokenMapper.query(startToken, stopToken, includeStart, includeStop).ifPresent(x -> builder.add(x, SHOULD)); // Add last partition filter maybeStopClustering.ifPresent(stopClustering -> { DecoratedKey stopKey = (DecoratedKey) stopPosition; builder.add(keyMapper.query(stopKey, null, stopClustering, true, false), SHOULD); }); // Return query, or empty if there are no restrictions BooleanQuery query = builder.build(); return query.clauses().isEmpty() ? Optional.empty() : Optional.of(query); }
From source file:com.xiaomi.linden.core.TestLindenCore.java
License:Apache License
@Test public void testBoosts() throws Exception { String bql = "select * from linden by title = \"lucene\" and field1 = \"aaa\" boost by 2"; LindenSearchRequest request = bqlCompiler.compile(bql).getSearchRequest(); Query query = QueryConstructor.constructQuery(request.getQuery(), lindenConfig); Assert.assertTrue(query instanceof BooleanQuery); Assert.assertEquals(2f, query.getBoost(), DELTA5); bql = "select * from linden by title = \"lucene\" boost by 3"; request = bqlCompiler.compile(bql).getSearchRequest(); query = QueryConstructor.constructQuery(request.getQuery(), lindenConfig); Assert.assertTrue(query instanceof TermQuery); Assert.assertEquals(3f, query.getBoost(), DELTA5); bql = "select * from linden by Query is 'title:lucene' subBoost by 4 or tagstr = 'MI4'"; request = bqlCompiler.compile(bql).getSearchRequest(); query = QueryConstructor.constructQuery(request.getQuery(), lindenConfig); Assert.assertTrue(query instanceof BooleanQuery); BooleanQuery booleanQuery = (BooleanQuery) query; Assert.assertEquals(4f, booleanQuery.clauses().get(0).getQuery().getBoost(), DELTA5); Assert.assertEquals(1f, booleanQuery.clauses().get(1).getQuery().getBoost(), DELTA5); request = bqlCompiler.compile(bql).getSearchRequest(); LindenResult result = lindenCore.search(request); Assert.assertEquals(5, result.getHitsSize()); Assert.assertEquals("1", result.getHits().get(0).getId()); bql = "select * from linden by Query is 'title:lucene' subBoost by 4 or tagstr = 'MI4' subBoost by 2"; request = bqlCompiler.compile(bql).getSearchRequest(); query = QueryConstructor.constructQuery(request.getQuery(), lindenConfig); Assert.assertTrue(query instanceof BooleanQuery); booleanQuery = (BooleanQuery) query; Assert.assertEquals(4f, booleanQuery.clauses().get(0).getQuery().getBoost(), DELTA5); Assert.assertEquals(2f, booleanQuery.clauses().get(1).getQuery().getBoost(), DELTA5); request = bqlCompiler.compile(bql).getSearchRequest(); result = lindenCore.search(request); Assert.assertEquals(5, result.getHitsSize()); Assert.assertEquals("6", result.getHits().get(0).getId()); bql = "select * from linden by rank > 4 subBoost by 4 or tagstr = 'MI4'"; request = bqlCompiler.compile(bql).getSearchRequest(); query = QueryConstructor.constructQuery(request.getQuery(), lindenConfig); Assert.assertTrue(query instanceof BooleanQuery); booleanQuery = (BooleanQuery) query; Assert.assertEquals(4f, booleanQuery.clauses().get(0).getQuery().getBoost(), DELTA5); Assert.assertEquals(1f, booleanQuery.clauses().get(1).getQuery().getBoost(), DELTA5); request = bqlCompiler.compile(bql).getSearchRequest(); result = lindenCore.search(request); Assert.assertEquals(4, result.getHitsSize()); Assert.assertEquals("2", result.getHits().get(0).getId()); bql = "select * from linden by rank > 4 subBoost by 4 or tagstr = 'MI4' subBoost by 2.0"; request = bqlCompiler.compile(bql).getSearchRequest(); query = QueryConstructor.constructQuery(request.getQuery(), lindenConfig); Assert.assertTrue(query instanceof BooleanQuery); booleanQuery = (BooleanQuery) query; Assert.assertEquals(4f, booleanQuery.clauses().get(0).getQuery().getBoost(), DELTA5); Assert.assertEquals(2f, booleanQuery.clauses().get(1).getQuery().getBoost(), DELTA5); request = bqlCompiler.compile(bql).getSearchRequest(); result = lindenCore.search(request); Assert.assertEquals(4, result.getHitsSize()); Assert.assertEquals("6", result.getHits().get(0).getId()); // this boolean query case, does not support term query boost bql = "select * from linden by title = \"lucene\" and field1 = \"aaa\" boost by 2" + "|select * from linden by title = \"lucene\" boost by 3"; request = bqlCompiler.compile(bql).getSearchRequest(); query = QueryConstructor.constructQuery(request.getQuery(), lindenConfig); Assert.assertTrue(query instanceof DisjunctionMaxQuery); DisjunctionMaxQuery disjunctionMaxQuery = (DisjunctionMaxQuery) query; Assert.assertEquals(2f, disjunctionMaxQuery.getDisjuncts().get(0).getBoost(), DELTA5); Assert.assertEquals(3f, disjunctionMaxQuery.getDisjuncts().get(1).getBoost(), DELTA5); Assert.assertEquals("(((+title:lucene +field1:aaa)^2.0) | title:lucene^3.0)~0.1", query.toString()); bql = "select * from linden by query is \"title:(lucene test)^2\" where rank > 1 boost by 2"; request = bqlCompiler.compile(bql).getSearchRequest(); query = QueryConstructor.constructQuery(request.getQuery(), lindenConfig); Assert.assertTrue(query instanceof BooleanQuery); Assert.assertEquals("(title:lucene title:test)^4.0", query.toString()); bql = "select * from linden by flexible_query is \"lucene test\" in (title)\n" + "using model test(Float m = 10)\n" + "begin\n" + " return score();\n" + "end where rank > 1 source explain boost by 2"; request = bqlCompiler.compile(bql).getSearchRequest(); query = QueryConstructor.constructQuery(request.getQuery(), lindenConfig); Assert.assertEquals("FlexibleQuery([title]:[lucene,test])^2.0", query.toString()); bql = "select * from linden by query is \"title:lucene^2\" where rank > 1 order by rank, field1 desc source boost by 2" + "|select * from linden by query is \"title:test^3 field1:aaa\" where rank > 1 order by rank, field1 desc source boost by 0.03"; request = bqlCompiler.compile(bql).getSearchRequest(); query = QueryConstructor.constructQuery(request.getQuery(), lindenConfig); Assert.assertTrue(query instanceof DisjunctionMaxQuery); disjunctionMaxQuery = (DisjunctionMaxQuery) query; // subQuery 1 is filterQuery which contains a termQuery Assert.assertTrue(disjunctionMaxQuery.getDisjuncts().get(0) instanceof FilteredQuery); FilteredQuery filteredQuery = (FilteredQuery) disjunctionMaxQuery.getDisjuncts().get(0); Assert.assertTrue(filteredQuery.getQuery() instanceof TermQuery); Assert.assertEquals(4f, filteredQuery.getQuery().getBoost(), DELTA5); // subQuery 2 is filterQuery which contains a booleanQuery Assert.assertTrue(disjunctionMaxQuery.getDisjuncts().get(1) instanceof FilteredQuery); filteredQuery = (FilteredQuery) disjunctionMaxQuery.getDisjuncts().get(1); Assert.assertTrue(filteredQuery.getQuery() instanceof BooleanQuery); Assert.assertEquals(0.03f, filteredQuery.getQuery().getBoost(), DELTA5); Assert.assertEquals(// w w w. j av a 2 s . c o m "(filtered(title:lucene^4.0)->rank:{1.0 TO *} | filtered((title:test^3.0 field1:aaa)^0.03)->rank:{1.0 TO *})~0.1", query.toString()); // test FlexibleQuery bql = "select * from linden by flexible_query is \"lucene\" in (title)\n" + "using model test(Float m = 10)\n" + "begin\n" + " float sum = 0f;\n" + " for (int i = 0; i < getFieldLength(); ++i) {\n" + " for (int j = 0; j < getTermLength(); ++j) {\n" + " sum += 10 * getScore(i, j);\n" + " addTermExpl(i, j, 10, getExpl(\"[%.2f]\", sum));\n" + " }\n" + " addFieldExpl(i, 20, getExpl(\"[%.2f]\", sum * m));\n" + " }\n" + " return sum * m;\n" + "end where rank > 1 source explain"; bql = bql + "|select * from linden by flexible_query is \"test^3\" in (field1)\n" + "using model test(Float m = 10)\n" + "begin\n" + " float sum = 0f;\n" + " for (int i = 0; i < getFieldLength(); ++i) {\n" + " for (int j = 0; j < getTermLength(); ++j) {\n" + " sum += 10 * getScore(i, j);\n" + " addTermExpl(i, j, 10, getExpl(\"[%.2f]\", sum));\n" + " }\n" + " addFieldExpl(i, 20, getExpl(\"[%.2f]\", sum * m));\n" + " }\n" + " return sum * m;\n" + "end where rank > 1 source explain boost by 0.5"; request = bqlCompiler.compile(bql).getSearchRequest(); query = QueryConstructor.constructQuery(request.getQuery(), lindenConfig); Assert.assertTrue(query instanceof DisjunctionMaxQuery); disjunctionMaxQuery = (DisjunctionMaxQuery) query; // subQuery 1 is a FilteredQuery which contains a FlexibleQuery Assert.assertTrue(disjunctionMaxQuery.getDisjuncts().get(0) instanceof FilteredQuery); filteredQuery = (FilteredQuery) disjunctionMaxQuery.getDisjuncts().get(0); Assert.assertTrue(filteredQuery.getQuery() instanceof FlexibleQuery); Assert.assertEquals(1f, filteredQuery.getQuery().getBoost(), DELTA5); // subQuery 2 is a FilteredQuery which contains a FlexibleQuery Assert.assertTrue(disjunctionMaxQuery.getDisjuncts().get(1) instanceof FilteredQuery); filteredQuery = (FilteredQuery) disjunctionMaxQuery.getDisjuncts().get(1); Assert.assertTrue(filteredQuery.getQuery() instanceof FlexibleQuery); Assert.assertEquals(0.5f, filteredQuery.getQuery().getBoost(), DELTA5); Assert.assertEquals( "(filtered(FlexibleQuery([title]:[lucene]))->rank:{1.0 TO *} | filtered(FlexibleQuery([field1]:[test^3.0])^0.5)->rank:{1.0 TO *})~0.1", query.toString()); }