Example usage for org.apache.solr.client.solrj SolrQuery setQuery

List of usage examples for org.apache.solr.client.solrj SolrQuery setQuery

Introduction

In this page you can find the example usage for org.apache.solr.client.solrj SolrQuery setQuery.

Prototype

public SolrQuery setQuery(String query) 

Source Link

Usage

From source file:org.hoteia.qalingo.core.solr.service.StoreSolrService.java

License:Apache License

public StoreResponseBean searchStore(String searchBy, String searchText, List<String> facetFields,
        List<String> cities, List<String> countries) throws SolrServerException, IOException {
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setParam("rows", ROWS_DEFAULT_VALUE);

    if (StringUtils.isEmpty(searchBy)) {
        throw new IllegalArgumentException("SearchBy field can not be Empty or Blank!");
    }//from  ww  w  .  j av  a 2s.  co m

    if (StringUtils.isEmpty(searchText)) {
        solrQuery.setQuery(searchBy + ":*");
    } else {
        solrQuery.setQuery(searchBy + ":" + searchText + "*");
    }

    if (facetFields != null && facetFields.size() > 0) {
        solrQuery.setFacet(true);
        solrQuery.setFacetMinCount(1);
        solrQuery.setFacetLimit(30);
        for (String facetField : facetFields) {
            solrQuery.addFacetField(facetField);
        }
    }

    if (cities != null && cities.size() > 0) {
        StringBuilder fq = new StringBuilder("city:(");
        for (int i = 0; i < cities.size(); i++) {
            String city = cities.get(i);
            fq.append('"' + city + '"');
            if (i < cities.size() - 1) {
                fq.append(" OR ");
            }
        }
        fq.append(")");
        solrQuery.addFilterQuery(fq.toString());
    }
    if (countries != null && countries.size() > 0) {
        StringBuilder fq = new StringBuilder("countrycode:(");
        for (int i = 0; i < countries.size(); i++) {
            String country = countries.get(i);
            fq.append('"' + country + '"');
            if (i < countries.size() - 1) {
                fq.append(" OR ");
            }
        }
        fq.append(")");
        solrQuery.addFilterQuery(fq.toString());
    }

    logger.debug("QueryRequest solrQuery: " + solrQuery);

    SolrRequest request = new QueryRequest(solrQuery, METHOD.POST);

    QueryResponse response = new QueryResponse(storeSolrServer.request(request), storeSolrServer);

    logger.debug("QueryResponse Obj: " + response.toString());

    List<StoreSolr> solrList = response.getBeans(StoreSolr.class);
    StoreResponseBean storeResponseBean = new StoreResponseBean();
    storeResponseBean.setStoreSolrList(solrList);

    if (facetFields != null && facetFields.size() > 0) {
        List<FacetField> solrFacetFieldList = response.getFacetFields();
        storeResponseBean.setStoreSolrFacetFieldList(solrFacetFieldList);
    }
    return storeResponseBean;
}

From source file:org.hoteia.qalingo.core.solr.service.StoreSolrService.java

License:Apache License

public StoreResponseBean searchStore() throws SolrServerException, IOException {
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setParam("rows", ROWS_DEFAULT_VALUE);

    solrQuery.setQuery("*");
    solrQuery.setFacet(true);//from www .j  av  a 2s . c o  m
    solrQuery.setFacetMinCount(1);
    solrQuery.setFacetLimit(8);
    solrQuery.addFacetField("name");

    logger.debug("QueryRequest solrQuery: " + solrQuery);

    SolrRequest request = new QueryRequest(solrQuery, METHOD.POST);

    QueryResponse response = new QueryResponse(storeSolrServer.request(request), storeSolrServer);

    logger.debug("QueryResponse Obj: " + response.toString());

    List<StoreSolr> solrList = response.getBeans(StoreSolr.class);
    List<FacetField> solrFacetFieldList = response.getFacetFields();
    StoreResponseBean storeResponseBean = new StoreResponseBean();
    storeResponseBean.setStoreSolrList(solrList);
    storeResponseBean.setStoreSolrFacetFieldList(solrFacetFieldList);
    return storeResponseBean;
}

From source file:org.hoteia.qalingo.core.solr.service.UserSolrService.java

License:Apache License

public UserResponseBean searchUser(final String searchQuery, final List<String> facetFields,
        final List<String> filterQueries, final SolrParam solrParam)
        throws IllegalArgumentException, SolrServerException, IOException {
    SolrQuery solrQuery = new SolrQuery();

    if (solrParam != null) {
        if (solrParam.get("rows") != null) {
            solrQuery.setParam("rows", (String) solrParam.get("rows"));
        } else {//from   ww  w. j a  v a 2s  . c  om
            solrQuery.setParam("rows", getMaxResult());
        }

        if (solrParam.get("sortField") != null) {
            SortField sortField = (SortField) solrParam.get("sortField");
            for (Iterator<String> iterator = sortField.keySet().iterator(); iterator.hasNext();) {
                String field = (String) iterator.next();
                solrQuery.addSortField(field, sortField.get(field));
            }
        }
    }

    if (StringUtils.isEmpty(searchQuery)) {
        throw new IllegalArgumentException("SearchQuery field can not be Empty or Blank!");
    }
    solrQuery.setQuery(searchQuery);

    if (facetFields != null && !facetFields.isEmpty()) {
        solrQuery.setFacet(true);
        solrQuery.setFacetMinCount(1);
        for (String facetField : facetFields) {
            solrQuery.addFacetField(facetField);
        }
    }

    logger.debug("QueryRequest solrQuery: " + solrQuery);

    SolrRequest request = new QueryRequest(solrQuery, METHOD.POST);

    QueryResponse response = new QueryResponse(userSolrServer.request(request), userSolrServer);

    logger.debug("QueryResponse Obj: " + response.toString());

    List<UserSolr> solrList = response.getBeans(UserSolr.class);
    UserResponseBean userResponseBean = new UserResponseBean();
    userResponseBean.setUserSolrList(solrList);

    if (facetFields != null && !facetFields.isEmpty()) {
        List<FacetField> solrFacetFieldList = response.getFacetFields();
        userResponseBean.setUserSolrFacetFieldList(solrFacetFieldList);
    }
    return userResponseBean;
}

From source file:org.hoteia.qalingo.core.solr.service.UserSolrService.java

License:Apache License

@Deprecated
public UserResponseBean searchUser(String searchBy, String searchText, List<String> facetFields)
        throws IllegalArgumentException, SolrServerException, IOException {
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setParam("rows", getMaxResult());

    if (StringUtils.isEmpty(searchBy)) {
        throw new IllegalArgumentException("SearchBy field can not be Empty or Blank!");
    }/*from w  w w .  j a v  a2 s  .  co  m*/

    if (StringUtils.isEmpty(searchText)) {
        solrQuery.setQuery(searchBy + ":*");
    } else {
        solrQuery.setQuery(searchBy + ":" + searchText + "*");
    }

    if (facetFields != null && !facetFields.isEmpty()) {
        solrQuery.setFacet(true);
        solrQuery.setFacetMinCount(1);
        for (String facetField : facetFields) {
            solrQuery.addFacetField(facetField);
        }
    }

    logger.debug("QueryRequest solrQuery: " + solrQuery);

    SolrRequest request = new QueryRequest(solrQuery, METHOD.POST);

    QueryResponse response = new QueryResponse(userSolrServer.request(request), userSolrServer);

    logger.debug("QueryResponse Obj: " + response.toString());

    List<UserSolr> solrList = response.getBeans(UserSolr.class);
    UserResponseBean userResponseBean = new UserResponseBean();
    userResponseBean.setUserSolrList(solrList);

    if (facetFields != null && !facetFields.isEmpty()) {
        List<FacetField> solrFacetFieldList = response.getFacetFields();
        userResponseBean.setUserSolrFacetFieldList(solrFacetFieldList);
    }
    return userResponseBean;
}

From source file:org.hoteia.qalingo.core.solr.service.UserSolrService.java

License:Apache License

public UserResponseBean searchUser() throws IllegalArgumentException, SolrServerException, IOException {
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setParam("rows", getMaxResult());

    solrQuery.setQuery("*");
    solrQuery.setFacet(true);/*from  w  ww . j a  va 2s.  c o  m*/
    solrQuery.setFacetMinCount(1);
    solrQuery.addFacetField("lastname");

    logger.debug("QueryRequest solrQuery: " + solrQuery);

    SolrRequest request = new QueryRequest(solrQuery, METHOD.POST);

    QueryResponse response = new QueryResponse(userSolrServer.request(request), userSolrServer);

    logger.debug("QueryResponse Obj: " + response.toString());

    List<UserSolr> solrList = response.getBeans(UserSolr.class);
    List<FacetField> solrFacetFieldList = response.getFacetFields();

    UserResponseBean userResponseBean = new UserResponseBean();
    userResponseBean.setUserSolrList(solrList);
    userResponseBean.setUserSolrFacetFieldList(solrFacetFieldList);
    return userResponseBean;
}

From source file:org.intermine.api.searchengine.solr.SolrKeywordSearchHandler.java

License:GNU General Public License

private QueryResponse performSearch(InterMineAPI im, String queryString, Map<String, String> facetValues,
        List<Integer> ids, int offSet, int rowSize) {

    SolrClient solrClient = SolrClientManager.getClientInstance(im.getObjectStore());

    QueryResponse resp = null;//from   ww w.  j  a v  a2  s .c  o m

    KeywordSearchPropertiesManager keywordSearchPropertiesManager = KeywordSearchPropertiesManager
            .getInstance(im.getObjectStore());

    Vector<KeywordSearchFacetData> facets = keywordSearchPropertiesManager.getFacets();

    Map<ClassDescriptor, Float> classBoost = keywordSearchPropertiesManager.getClassBoost();

    List<String> fieldNames = getFieldNamesFromSolrSchema(solrClient);

    try {

        SolrQuery newQuery = new SolrQuery();
        newQuery.setQuery(queryString);
        newQuery.setStart(offSet);
        newQuery.setRows(rowSize);
        newQuery.addField("score");
        newQuery.addField("id");
        newQuery.add("defType", "edismax");

        for (KeywordSearchFacetData keywordSearchFacetData : facets) {
            newQuery.addFacetField("facet_" + keywordSearchFacetData.getField());
        }

        // add faceting selections
        for (Map.Entry<String, String> facetValue : facetValues.entrySet()) {
            if (facetValue != null) {
                newQuery.addFilterQuery(facetValue.getKey() + ":" + facetValue.getValue());
            }
        }

        //limiting the query based on search bag
        if (ids != null && !ids.isEmpty()) {
            for (int id : ids) {
                newQuery.addFilterQuery("id", Integer.toString(id));
            }
        }

        String boostQuery = "";

        for (Map.Entry<ClassDescriptor, Float> boostValue : classBoost.entrySet()) {
            if (boostValue != null) {
                boostQuery += "classname:" + boostValue.getKey().getUnqualifiedName() + "^"
                        + boostValue.getValue() + " ";
            }
        }

        LOG.info("BoostQuery : " + boostQuery);

        String fieldListQuery = "";

        for (String field : fieldNames) {
            fieldListQuery = fieldListQuery + field;
            if (field.endsWith("_raw")) {
                fieldListQuery = fieldListQuery + "^2.0";
            }
            fieldListQuery = fieldListQuery + " ";
        }

        LOG.info("Field List Query : " + fieldListQuery);

        newQuery.add("bq", boostQuery);
        newQuery.add("qf", fieldListQuery);

        resp = solrClient.query(newQuery, SolrRequest.METHOD.POST);

        return resp;

    } catch (SolrServerException e) {
        LOG.error("Query performed on solr failed for search term : " + queryString, e);
        e.printStackTrace();

    } catch (IOException e) {
        LOG.error("Query performed on solr failed for search term : " + queryString, e);
        e.printStackTrace();

    }

    return resp;
}

From source file:org.intermine.web.autocompletion.AutoCompleter.java

License:GNU General Public License

/**
 * Returns n search results//from   www  .  j  a  va  2s.  c  o m
 * @param query is the string used for search
 * @param field is the field in which you like to search (e.g. name)
 * @param className is the class in which you like to search (e.g. SOTerm)
 * @param n number of the first n search results
 * @return string array with search results and an error flag at position 0
 */
public String[] getFastList(String query, String field, String className, int n) {

    String status = "true";
    String[] stringResults = null;

    SolrClient solrClient = SolrClientHandler.getClientInstance(this.propertiesManager.getSolrUrl());

    QueryResponse resp = null;

    if (!"".equals(query) && !query.trim().startsWith("*")) {

        if (query.endsWith(" ")) {
            query = query.substring(0, query.length() - 1);
        }

        String[] tmp;
        if (query.contains(" ")) {
            tmp = query.replaceAll(" +", " ").trim().split(" ");
            query = new String();

            for (int i = 0; i < tmp.length; i++) {
                query += tmp[i];
                if (i < tmp.length - 1) {
                    query += "* AND " + field + ":";
                }
            }
        }

        try {

            SolrQuery newQuery = new SolrQuery();
            newQuery.setQuery(field + ":" + query + "*"); //adding a wildcard in the end
            newQuery.setRequestHandler("select");
            newQuery.setRows(n); // FIXME: hardcoded maximum
            newQuery.setFilterQueries(CLASSNAME_FIELD + ":" + className);

            resp = solrClient.query(newQuery);

            SolrDocumentList results = resp.getResults();

            stringResults = new String[results.size() + 1];

            for (int i = 1; i < results.size() + 1; i++) {

                try {
                    SolrDocument document = results.get(i - 1);

                    stringResults[i] = ((ArrayList<String>) document.getFieldValue(field)).get(0);

                } catch (Exception e) {
                    status = "No results! Please try again.";
                }
            }

            stringResults[0] = status;

            return stringResults;

        } catch (SolrServerException e) {
            e.printStackTrace();

        } catch (IOException e) {
            e.printStackTrace();
            status = "Please type in more characters to get results.";
            stringResults = new String[1];
            stringResults[0] = status;
        }

        return stringResults;
    }

    return null;
}

From source file:org.kimios.kernel.controller.impl.SolrSearchController.java

License:Open Source License

private SearchResponse quickSearchIds(Session session, String query, DMEntity entity, int start, int pageSize,
        String sortField, String sortDir) {
    String documentNameQuery = QueryBuilder.documentNameQuery(query);

    SolrQuery indexQuery = new SolrQuery();

    ArrayList<String> filterQueries = new ArrayList<String>();
    if (!getSecurityAgent().isAdmin(session.getUserName(), session.getUserSource())) {
        String aclQuery = QueryBuilder.buildAclQuery(session);
        filterQueries.add(aclQuery);// w  w w.j a  v  a 2  s.c o  m
    }
    if (entity != null) {
        DMEntity entityLoaded = dmsFactoryInstantiator.getDmEntityFactory().getEntity(entity.getUid());
        String pathQuery = "DocumentParent:" + entityLoaded.getPath() + "/*";
        filterQueries.add(pathQuery);
    }
    indexQuery.setFilterQueries(filterQueries.toArray(new String[] {}));
    if (sortField != null) {
        indexQuery.addSortField(sortField,
                SolrQuery.ORDER.valueOf((sortDir != null ? sortDir.toLowerCase() : "asc")));
    }
    indexQuery.addSortField("score", SolrQuery.ORDER.desc);
    indexQuery.setQuery(documentNameQuery);
    if (start > -1 && pageSize > -1) {
        indexQuery.setStart(start);
        indexQuery.setRows(pageSize);
    }

    SearchResponse searchResponse = solrIndexManager.executeSolrQuery(indexQuery);
    return searchResponse;
}

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  . j a v a  2  s.  com*/
    }
    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);/*ww w  . ja va 2  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;

}