List of usage examples for org.apache.solr.client.solrj.util ClientUtils escapeQueryChars
public static String escapeQueryChars(String s)
From source file:org.dspace.xoai.tests.unit.services.impl.AbstractQueryResolverTest.java
License:BSD License
protected String escapedFromDate(Date date) { return ClientUtils.escapeQueryChars( baseDateProvider.format(new DateBuilder(date).setMinMilliseconds().build()).replace("Z", ".000Z")); }
From source file:org.dspace.xoai.tests.unit.services.impl.AbstractQueryResolverTest.java
License:BSD License
protected String escapedUntilDate(Date date) { return ClientUtils.escapeQueryChars( baseDateProvider.format(new DateBuilder(date).setMaxMilliseconds().build()).replace("Z", ".999Z")); }
From source file:org.eclipse.orion.internal.server.search.Indexer.java
License:Open Source License
private boolean isModified(IFileStore file, IFileInfo fileInfo) { try {//from w ww .j a va2 s . c o m //if there is no match, then the file last modified doesn't match last index so assume it was modified StringBuffer qString = new StringBuffer(ProtocolConstants.KEY_ID); qString.append(':'); qString.append(ClientUtils.escapeQueryChars(file.toURI().toString())); qString.append(" AND "); //$NON-NLS-1$ qString.append(ProtocolConstants.KEY_LAST_MODIFIED); qString.append(':'); qString.append(Long.toString(fileInfo.getLastModified())); SolrQuery query = new SolrQuery(qString.toString()); query.setParam(CommonParams.FL, ProtocolConstants.KEY_ID); QueryResponse response = server.query(query); return response.getResults().getNumFound() == 0; } catch (SolrServerException e) { handleIndexingFailure(e); //attempt to re-index return true; } }
From source file:org.gbif.common.search.builder.SuggestQueryStringBuilder.java
License:Apache License
/** * Creates a query string that matches terms by to the partial phrase query fields. * The method takes a query q with the form: "pum conc" and produces a query with the form, for input puma con: * "(canonical_name_auto:\"puma con\"^1000 OR canonical_name_auto:puma^1000) OR (canonical_name:puma^300 OR canonical_name:con^200)" * * @param q input query/* w ww. ja v a 2 s . co m*/ * @return a string containing a valid Solr query */ private String buildStringQuery(String q) { String cleanQ = clearConsecutiveBlanks(q); String[] tokens = cleanQ.split("\\ "); List<String> query = new ArrayList<String>(); String[] phraseQuery = new String[2]; List<String> partialQuery = new ArrayList<String>(); Integer partialBoost = PARTIAL_QUERY_BOOST; if (tokens.length > 1) { phraseQuery[0] = phraseQueryTemplate.replace(QUERY_PLACE_HOLDER, ClientUtils.escapeQueryChars(cleanQ)); phraseQuery[1] = startPhraseQueryTemplate.replace(QUERY_PLACE_HOLDER, ClientUtils.escapeQueryChars(tokens[0])); query.add(toParenthesesQuery(PARAMS_OR_JOINER.join(phraseQuery))); for (String token : tokens) { partialQuery.add(toBoostedQuery( queryTemplate.replace(QUERY_PLACE_HOLDER, ClientUtils.escapeQueryChars(token)), partialBoost, false)); if (partialBoost > PARTIAL_BOOST_DECREMENT) { partialBoost -= PARTIAL_BOOST_DECREMENT; } } } else { if (SolrConstants.DEFAULT_FILTER_QUERY.equals(cleanQ)) { query.add(toParenthesesQuery(startPhraseQueryTemplate.replace(QUERY_PLACE_HOLDER, cleanQ))); partialQuery.add( toBoostedQuery(queryTemplate.replace(QUERY_PLACE_HOLDER, tokens[0]), partialBoost, false)); } else { query.add(toParenthesesQuery(startPhraseQueryTemplate.replace(QUERY_PLACE_HOLDER, ClientUtils.escapeQueryChars(cleanQ)))); partialQuery.add(toBoostedQuery( queryTemplate.replace(QUERY_PLACE_HOLDER, ClientUtils.escapeQueryChars(tokens[0])), partialBoost, false)); } } query.add(toParenthesesQuery(PARAMS_OR_JOINER.join(partialQuery))); return PARAMS_OR_JOINER.join(query); }
From source file:org.kimios.kernel.controller.impl.SolrSearchController.java
License:Open Source License
@Deprecated private SearchResponse advancedSearchIds(Session session, String xmlStream, DMEntity entity, String sortField, String sortDir) throws DataSourceException, ConfigException, IndexException, IOException, ParserConfigurationException, SAXException { SolrQuery indexQuery = new SolrQuery(); ArrayList<String> aclFilterQueries = new ArrayList<String>(); ArrayList<String> filterQueries = new ArrayList<String>(); if (!getSecurityAgent().isAdmin(session.getUserName(), session.getUserSource())) { String aclQuery = QueryBuilder.buildAclQuery(session); aclFilterQueries.add(aclQuery);/*from w w w .jav a 2 s .co m*/ } if (entity != null) { DMEntity entityLoaded = dmsFactoryInstantiator.getDmEntityFactory().getEntity(entity.getUid()); String pathQuery = "DocumentParent:" + entityLoaded.getPath() + "/*"; filterQueries.add(pathQuery); } //Parsing XML stream List<String> queries = new ArrayList<String>(); org.w3c.dom.Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder() .parse(new java.io.ByteArrayInputStream(xmlStream.getBytes("UTF-8"))); Element root = doc.getDocumentElement(); NodeList childNodes = root.getChildNodes(); for (int i = 0; i < childNodes.getLength(); i++) { Node node = childNodes.item(i); //Document name query if (node.getNodeName().equals("document-name")) { if (node.getTextContent() != null && !node.getTextContent().equals("")) { queries.add(QueryBuilder.documentNameQuery(node.getTextContent().toLowerCase())); } } //Document body query if (node.getNodeName().equals("text")) { if (node.getTextContent() != null && !node.getTextContent().equals("")) { String bodyQuery = ClientUtils.escapeQueryChars(node.getTextContent()); queries.add("DocumentBody:" + bodyQuery); } } //Document uid query if (node.getNodeName().equals("document-uid")) { if (node.getTextContent() != null && !node.getTextContent().equals("")) { filterQueries.add("DocumentUid:" + node.getTextContent()); } } //Document type query if (node.getNodeName().equals("document-type-uid")) { if (node.getTextContent() != null && !node.getTextContent().equals("")) { long dtUid = Long.parseLong(node.getTextContent()); List<DocumentType> items = dmsFactoryInstantiator.getDocumentTypeFactory() .getChildrenDocumentType(dtUid); List<DocumentType> documentTypeList = new ArrayList<DocumentType>(items); for (DocumentType it : items) { documentTypeList.addAll(dmsFactoryInstantiator.getDocumentTypeFactory() .getChildrenDocumentType(it.getUid())); } StringBuilder builder = new StringBuilder(); builder.append("DocumentTypeUid:(" + dtUid + (documentTypeList.size() > 0 ? " OR " : "")); int idx = 1; for (DocumentType dtIt : documentTypeList) { builder.append(dtIt.getUid()); idx++; if (idx < documentTypeList.size()) { builder.append(" OR "); } } builder.append(")"); filterQueries.add(builder.toString()); } } //Meta data queries if (node.getNodeName().equals("meta-value")) { Meta meta = dmsFactoryInstantiator.getMetaFactory() .getMeta(Long.parseLong(node.getAttributes().getNamedItem("uid").getTextContent())); if (meta != null) { if (meta.getMetaType() == MetaType.STRING) { if (node.getTextContent() != null && !node.getTextContent().equals("")) { String metaStringQuery = "MetaDataString_" + meta.getUid() + ":*" + ClientUtils.escapeQueryChars(node.getTextContent()) + "*"; queries.add(metaStringQuery); } } if (meta.getMetaType() == MetaType.NUMBER) { Double min = null; Double max = null; boolean toAdd = false; if (node.getAttributes().getNamedItem("number-from") != null && !node.getAttributes().getNamedItem("number-from").getTextContent().equals("")) { min = Double .parseDouble(node.getAttributes().getNamedItem("number-from").getTextContent()); toAdd = true; } if (node.getAttributes().getNamedItem("number-to") != null && !node.getAttributes().getNamedItem("number-to").getTextContent().equals("")) { max = Double .parseDouble(node.getAttributes().getNamedItem("number-to").getTextContent()); toAdd = true; } if (toAdd) { String metaNumberQuery = "MetaDataNumber_" + meta.getUid() + ":[" + (min != null ? min : "*") + " TO " + (max != null ? max : "*") + "]"; queries.add(metaNumberQuery); } } if (meta.getMetaType() == MetaType.DATE) { Date min = null; Date max = null; boolean toAdd = false; if (node.getAttributes().getNamedItem("date-from") != null && !node.getAttributes().getNamedItem("date-from").getTextContent().equals("")) { min = new Date(Long .parseLong(node.getAttributes().getNamedItem("date-from").getTextContent())); toAdd = true; } if (node.getAttributes().getNamedItem("date-to") != null && !node.getAttributes().getNamedItem("date-to").getTextContent().equals("")) { max = new Date( Long.parseLong(node.getAttributes().getNamedItem("date-to").getTextContent())); toAdd = true; } if (toAdd) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); df.setTimeZone(TimeZone.getTimeZone("UTC")); String metaDateQuery = "MetaDataDate_" + meta.getUid() + ":[" + (min != null ? df.format(min) : "*") + " TO " + (max != null ? df.format(max) : "*") + "]"; queries.add(metaDateQuery); } } if (meta.getMetaType() == MetaType.BOOLEAN) { if (node.getAttributes().getNamedItem("boolean-value") != null && !node.getAttributes() .getNamedItem("boolean-value").getTextContent().equals("")) { String metaBoolQuery = "MetaDataBoolean_" + meta.getUid() + ":" + Boolean.parseBoolean( node.getAttributes().getNamedItem("boolean-value").getTextContent()); queries.add(metaBoolQuery); } } } } } indexQuery.setFilterQueries(aclFilterQueries.toArray(new String[] {})); indexQuery.addSortField("score", SolrQuery.ORDER.desc); StringBuilder sQuery = new StringBuilder(); for (String q : queries) { sQuery.append("+"); sQuery.append(q); sQuery.append(" "); } if (queries.size() == 0) { /* Convert filter queries in query, to get result */ for (String q : filterQueries) { sQuery.append("+"); sQuery.append(q); sQuery.append(" "); } } log.debug("Solr Final Query: " + sQuery); indexQuery.setQuery(sQuery.toString()); SearchResponse response = solrIndexManager.executeSolrQuery(indexQuery); return response; }
From source file:org.kimios.kernel.controller.impl.SolrSearchController.java
License:Open Source License
private SolrQuery parseQueryFromListCriteria(Session session, int page, int pageSize, List<Criteria> criteriaList, String sortField, String sortDir) throws ParseException { SolrQuery indexQuery = new SolrQuery(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); sdf.setTimeZone(TimeZone.getTimeZone("UTC")); ArrayList<String> aclFilterQueries = new ArrayList<String>(); ArrayList<String> filterQueries = new ArrayList<String>(); ArrayList<String> queries = new ArrayList<String>(); if (!getSecurityAgent().isAdmin(session.getUserName(), session.getUserSource())) { String aclQuery = QueryBuilder.buildAclQuery(session); aclFilterQueries.add(aclQuery);/* w w w. j a v a2 s. co m*/ } for (Criteria c : criteriaList) { if (c.getQuery() != null && c.getQuery().trim().length() > 0 || c.getRangeMin() != null || c.getRangeMax() != null) { if (c.getFieldName().equals("DocumentName")) { queries.add(QueryBuilder.documentNameQuery(c.getQuery())); } else if (c.getFieldName().equals("DocumentBody")) { queries.add("DocumentBody:" + ClientUtils.escapeQueryChars(c.getQuery())); } else if (c.getFieldName().equals("DocumentUid")) { filterQueries.add("DocumentUid:" + c.getQuery()); } else if (c.getFieldName().equals("DocumentParent")) { filterQueries.add(QueryBuilder.documentParentQuery(c.getQuery())); } else if (c.getFieldName().equals("DocumentVersionUpdateDate")) { queries.add(QueryBuilder.documentUpdateDateQuery("DocumentVersionUpdateDate", c.getRangeMin(), c.getRangeMax())); } else if (c.getFieldName().equals("DocumentCreationDate")) { queries.add(QueryBuilder.documentUpdateDateQuery("DocumentCreationDate", c.getRangeMin(), c.getRangeMax())); } else if (c.getFieldName().equals("DocumentTypeUid")) { long dtUid = Long.parseLong(c.getQuery()); List<DocumentType> items = dmsFactoryInstantiator.getDocumentTypeFactory() .getChildrenDocumentType(dtUid); List<DocumentType> documentTypeList = new ArrayList<DocumentType>(items); for (DocumentType it : items) { documentTypeList.addAll(dmsFactoryInstantiator.getDocumentTypeFactory() .getChildrenDocumentType(it.getUid())); } StringBuilder builder = new StringBuilder(); builder.append("DocumentTypeUid:(" + dtUid + (documentTypeList.size() > 0 ? " OR " : "")); int idx = 0; for (DocumentType dtIt : documentTypeList) { builder.append(dtIt.getUid()); idx++; if (idx < documentTypeList.size()) { builder.append(" OR "); } } builder.append(")"); filterQueries.add(builder.toString()); } else if (c.getFieldName().startsWith("MetaData")) { Meta meta = dmsFactoryInstantiator.getMetaFactory().getMeta(c.getMetaId()); if (meta != null) { if (meta.getMetaType() == MetaType.STRING) { String metaStringQuery = "MetaDataString_" + meta.getUid() + ":*" + ClientUtils.escapeQueryChars(c.getQuery().toLowerCase()) + "*"; queries.add(metaStringQuery); } if (meta.getMetaType() == MetaType.NUMBER) { Double min = null; Double max = null; boolean toAdd = false; if (c.getRangeMin() != null && c.getRangeMin().trim().length() > 0) { min = Double.parseDouble(c.getRangeMin()); toAdd = true; } if (c.getRangeMax() != null && c.getRangeMax().trim().length() > 0) { max = Double.parseDouble(c.getRangeMax()); toAdd = true; } if (toAdd) { String metaNumberQuery = "MetaDataNumber_" + meta.getUid() + ":[" + (min != null ? min : "*") + " TO " + (max != null ? max : "*") + "]"; queries.add(metaNumberQuery); } } if (meta.getMetaType() == MetaType.DATE) { Date min = null; Date max = null; boolean toAdd = false; if (c.getRangeMin() != null && c.getRangeMin().trim().length() > 0) { try { min = sdf.parse(c.getRangeMin()); toAdd = true; } catch (Exception e) { toAdd = false; } } if (c.getRangeMax() != null && c.getRangeMax().trim().length() > 0) { try { max = sdf.parse(c.getRangeMax()); toAdd = true; } catch (Exception e) { toAdd = false; } } if (toAdd) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); df.setTimeZone(TimeZone.getTimeZone("UTC")); String metaDateQuery = QueryBuilder.documentUpdateDateQuery( "MetaDataDate_" + meta.getUid(), c.getRangeMin(), c.getRangeMax()); queries.add(metaDateQuery); } } if (meta.getMetaType() == MetaType.BOOLEAN) { String metaBoolQuery = "MetaDataBoolean_" + meta.getUid() + ":" + Boolean.parseBoolean(c.getQuery()); queries.add(metaBoolQuery); } } } } } indexQuery.setFilterQueries(filterQueries.toArray(new String[] {})); if (sortField != null) { indexQuery.addSortField(sortField, sortDir != null ? SolrQuery.ORDER.valueOf(sortDir.toLowerCase()) : SolrQuery.ORDER.asc); } indexQuery.addSortField("score", SolrQuery.ORDER.desc); StringBuilder sQuery = new StringBuilder(); for (String q : queries) { sQuery.append("+"); sQuery.append(q); sQuery.append(" "); } if (queries.size() == 0) { /* Convert filter queries in query, to get result */ for (String q : filterQueries) { sQuery.append("+"); sQuery.append(q); sQuery.append(" "); } } else { filterQueries.addAll(aclFilterQueries); indexQuery.setFilterQueries(filterQueries.toArray(new String[] {})); } log.debug("Solr Final Query: " + sQuery); indexQuery.setQuery(sQuery.toString()); if (pageSize > -1 && page > -1) { indexQuery.setRows(pageSize); indexQuery.setStart(page); } else { indexQuery.setRows(Integer.MAX_VALUE); } return indexQuery; }
From source file:org.kimios.kernel.index.query.QueryBuilder.java
License:Open Source License
public static String buildAclQuery(Session session) { List<String> aclQueriesList = new ArrayList<String>(); StringBuilder builder = new StringBuilder(); /*/*www. java 2 s . c o m*/ Owner Query */ builder.append("+(DocumentOwner:"); builder.append(session.getUserName()); builder.append("@"); builder.append(session.getUserSource()); builder.append(" OR "); /* Build list of possible ACL */ List<DMSecurityRule> rules = new ArrayList<DMSecurityRule>(); rules.add(DMSecurityRule.getInstance(session.getUserName(), session.getUserSource(), SecurityEntityType.USER, DMSecurityRule.READRULE)); rules.add(DMSecurityRule.getInstance(session.getUserName(), session.getUserSource(), SecurityEntityType.USER, DMSecurityRule.WRITERULE)); rules.add(DMSecurityRule.getInstance(session.getUserName(), session.getUserSource(), SecurityEntityType.USER, DMSecurityRule.FULLRULE)); for (Group g : session.getGroups()) { rules.add(DMSecurityRule.getInstance(g.getGid(), session.getUserSource(), SecurityEntityType.GROUP, DMSecurityRule.READRULE)); rules.add(DMSecurityRule.getInstance(g.getGid(), session.getUserSource(), SecurityEntityType.GROUP, DMSecurityRule.WRITERULE)); rules.add(DMSecurityRule.getInstance(g.getGid(), session.getUserSource(), SecurityEntityType.GROUP, DMSecurityRule.FULLRULE)); } String or = " OR "; for (int u = 0; u < rules.size(); u++) { DMSecurityRule rule = rules.get(u); builder.append("DocumentACL:"); builder.append(ClientUtils.escapeQueryChars(rule.getRuleHash())); if (u < (rules.size() - 1)) { builder.append(or); } } builder.append(") "); String bldNot = "-(DocumentACL:" + ClientUtils.escapeQueryChars(DMSecurityRule.getInstance(session.getUserName(), session.getUserSource(), SecurityEntityType.USER, DMSecurityRule.NOACCESS).getRuleHash()); bldNot += ")"; builder.append(bldNot); log.debug("SOLR ACL Query: " + builder.toString()); return builder.toString(); }
From source file:org.kimios.kernel.index.query.QueryBuilder.java
License:Open Source License
public static String documentNameQuery(String query) { String documentNameQuery = ""; boolean fileExtSearch = query.toLowerCase().contains("."); if (fileExtSearch) { String docName = null;/* w w w.j a va 2 s. c o m*/ String extension = null; extension = query.toLowerCase().substring(query.indexOf(".") + 1); docName = query.toLowerCase().substring(0, query.indexOf(".")); documentNameQuery = "DocumentName:*" + ClientUtils.escapeQueryChars(docName.toLowerCase()) + "*"; documentNameQuery += " AND DocumentExtension:" + ClientUtils.escapeQueryChars(extension) + "*"; } else { documentNameQuery = "DocumentName:*" + ClientUtils.escapeQueryChars(query.toLowerCase()) + "*"; } log.debug("SOLR DocumentName Query: " + documentNameQuery); return documentNameQuery; }
From source file:org.kimios.kernel.index.query.QueryBuilder.java
License:Open Source License
public static String documentParentQuery(String query) { String documentPathQuery = "DocumentParent:" + ClientUtils.escapeQueryChars(query) + "/*"; log.debug("SOLR DocumentParent Query: " + documentPathQuery); return documentPathQuery; }
From source file:org.lareferencia.xoai.filter.LRSetSpecFilter.java
License:BSD License
@Override public SolrFilterResult buildSolrQuery() { if (setSpec.startsWith("col_")) { try {/* w w w . jav a 2 s .c o m*/ return new SolrFilterResult("item.collections:" + ClientUtils.escapeQueryChars(setSpec)); } catch (Exception ex) { log.error(ex.getMessage(), ex); } } else if (setSpec.startsWith("com_")) { try { return new SolrFilterResult("item.communities:" + ClientUtils.escapeQueryChars(setSpec)); } catch (Exception e) { log.error(e.getMessage(), e); } } else { // sin prefijo se mapea contra item.collections return new SolrFilterResult("item.collections:" + ClientUtils.escapeQueryChars(setSpec)); } return new SolrFilterResult(); }