protected Query getFieldQuery(String field, String queryText) throws ParseException { checkNullField(field); // intercept magic field name of "_" to use as a hook for our // own functions. if (field.charAt(0) == '_') { if ("_val_".equals(field)) { if (parser==null) { return QueryParsing.parseFunction(queryText, schema); } else { QParser nested = parser.subQuery(queryText, "func"); return nested.getQuery(); } } else if ("_query_".equals(field) && parser != null) { return parser.subQuery(queryText, null).getQuery(); } } // default to a normal field query return super.getFieldQuery(field, queryText); }
public void addDebugInfo(NamedList<Object> debugInfo) { // encapsulate base debug info in a sub-list? baseParser.addDebugInfo(debugInfo); } };
/** Create a new QParser for parsing an embedded sub-query */ public QParser subQuery(String q, String defaultType) throws ParseException { checkRecurse(); if (defaultType == null && localParams != null) { // if not passed, try and get the defaultType from local params defaultType = localParams.get(QueryParsing.DEFTYPE); } QParser nestedParser = getParser(q, defaultType, getReq()); nestedParser.recurseCount = recurseCount; recurseCount--; return nestedParser; }
public Query getHighlightQuery() throws ParseException { return getQuery(); }
/** * Parses the fq param and adds it as a list of filter queries or reverts to null if nothing is found * or an Exception is thrown. * * @param req * @return either a query from the QueryParser or null */ private List<Query> getFilterQueries(SolrQueryRequest req) { List<Query> filters = null; String[] fqs = req.getParams().getParams("fq"); if (fqs != null && fqs.length != 0) { filters = new ArrayList<>(fqs.length); try { for (String fq : fqs) { if (fq != null && fq.trim().length() != 0) { QParser fqp = QParser.getParser(fq, req); fqp.setIsFilter(true); filters.add(fqp.getQuery()); } } } catch (SyntaxError e) { e.printStackTrace(); } if (filters.isEmpty()) { filters = null; } } return filters; }
/** * @param query the query * @return a lucene qparser * @throws SyntaxError iff something goes wrong */ public QParser parser(String query) throws SyntaxError { return QParser.getParser(query, req); } }
/** * Create a new QParser for parsing an embedded nested query. * <p> * Remove the nested parameters from the original request to avoid infinite * recursion. */ @Override public QParser subQuery(final String q, final String defaultType) throws ParseException { final QParser nestedParser = super.subQuery(q, defaultType); final NamedList<Object> params = nestedParser.getParams().toNamedList(); params.remove("nested"); nestedParser.setParams(SolrParams.toSolrParams(params)); return nestedParser; }
SortSpec sortSpec() throws SyntaxError { if (sortSpec == null) { sortSpec = qParser != null ? qParser.getSort(true) : QueryParsing.parseSortSpec("id asc", request); sortSpec.setOffset(0); } return sortSpec; }
parser = QParser.getParser(rb.getQueryString(), defType, rb.req); } catch (Exception e) { q = parser.getQuery(); } catch (Exception e) { rb.setSortSpec( parser.getSort(true) ); } catch (Exception e) { QParser fqp = null; try { fqp = QParser.getParser(fq, null, rb.req); } catch (Exception e) { filters.add(fqp.getQuery()); } catch (Exception e) {
public Query parse() throws ParseException { baseParser = subQuery(localParams.get(QueryParsing.V), null); return baseParser.getQuery(); }
List<Query> filterQueries = new ArrayList<Query>(corpusFilterQueries.length); for (String corpusFilterQuery : corpusFilterQueries) { QParser qParser = QParser.getParser(corpusFilterQuery, null, req); try { filterQueries.add(qParser.parse()); } catch (SyntaxError e) { throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
/** * Returns the {@link QParser} associated with this request. * * @param request the {@link SolrQueryRequest}. * @return the {@link QParser} associated with this request. * @throws SyntaxError in case of syntax errors. */ QParser qParser(final SolrQueryRequest request) throws SyntaxError { return QParser.getParser( queryString(request), DEFAULT_DEF_TYPE, request); }
/** * Create a new QParser for parsing an embedded nested query. * <p> * Remove the nested parameters from the original request to avoid infinite * recursion. */ @Override public QParser subQuery(final String q, final String defaultType) throws SyntaxError { final QParser nestedParser = super.subQuery(q, defaultType); final NamedList<Object> params = nestedParser.getParams().toNamedList(); params.remove("nested"); nestedParser.setParams(SolrParams.toSolrParams(params)); return nestedParser; }
/** Turns an array of query strings into a List of Query objects. * * @return null if no queries are generated */ public static List<Query> parseQueryStrings(SolrQueryRequest req, String[] queries) throws ParseException { if (null == queries || 0 == queries.length) return null; List<Query> out = new ArrayList<Query>(queries.length); for (String q : queries) { if (null != q && 0 != q.trim().length()) { out.add(QParser.getParser(q, null, req).getQuery()); } } return out; }
private void SearchDocumentsTypeII(SolrDocumentList results, SolrIndexSearcher searcher, String q, UserPermissions up, int ndocs, SolrQueryRequest req, Map<String, SchemaField> fields, Set<Integer> alreadyFound) throws IOException, ParseException { BooleanQuery bq = new BooleanQuery(); String permLvl = "PermissionLevel:" + up.getPermissionLevel(); QParser parser = QParser.getParser(permLvl, null, req); bq.add(parser.getQuery(), Occur.MUST); Filter filter = CachingWrapperFilter(new QueryWrapperFilter(bq)); QueryParser qp = new QueryParser(q, new StandardAnalyzer()); Query query = qp.parse(q); append (results, searcher.search( query, filter, 50).scoreDocs, alreadyFound, fields, new HashMap<String,Object>(), 0, searcher.getReader(), true); }
private List<Query> parseQueriesFromParam(final String paramName, final String defaultParserName) throws SyntaxException { final String[] qStrings = getRequestParams(paramName); if (qStrings.length > 0) { final List<Query> result = new ArrayList<>(qStrings.length); for (String qs : qStrings) { if (qs != null && qs.trim().length()> 0) { try { result.add(qParser.subQuery(qs, defaultParserName).getQuery()); } catch (final SyntaxError syntaxError) { throw new SyntaxException(syntaxError); } } } return result; } return Collections.emptyList(); }