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

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

Introduction

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

Prototype

public SolrQuery setFields(String... fields) 

Source Link

Usage

From source file:org.orcid.persistence.dao.impl.SolrDaoImpl.java

License:Open Source License

@Override
public Date retrieveLastModified(String orcid) {
    SolrQuery query = new SolrQuery();
    query.setQuery(ORCID + ":\"" + orcid + "\"");
    query.setFields(PROFILE_LAST_MODIFIED_DATE);
    try {/*from w  w w.j  a  v  a2  s  .co m*/
        QueryResponse response = solrServer.query(query);
        List<SolrDocument> results = response.getResults();
        if (results.isEmpty()) {
            return null;
        } else {
            return (Date) results.get(0).getFieldValue(PROFILE_LAST_MODIFIED_DATE);
        }

    } catch (SolrServerException e) {
        throw new NonTransientDataAccessResourceException(
                "Error retrieving last modified date from SOLR Server", e);
    }
}

From source file:org.outermedia.solrfusion.SolrTestServer.java

License:Open Source License

public SolrQuery createQuery(String query) {
    SolrQuery sq = new SolrQuery(query);
    sq.setFields("*");
    sq.setRows(Integer.MAX_VALUE);
    return sq;/*from  w  ww  .  j a  v  a 2 s.co m*/
}

From source file:org.psystems.dicom.browser.server.DicSuggestBoxServiceImpl.java

License:Open Source License

public SuggestTransactedResponse getSuggestions(long transactionId, String version, String dicName,
        SuggestOracle.Request req) throws DefaultGWTRPCException {
    SuggestTransactedResponse resp = new SuggestTransactedResponse();
    resp.setTransactionId(transactionId);

    //  ? //from   ww w  .ja  v  a 2  s .  co  m
    org.psystems.dicom.browser.server.Util.checkClentVersion(version);

    // Create a list to hold our suggestions (pre-set the lengthto the limit
    // specified by the request)

    List<Suggestion> suggestions = new ArrayList<Suggestion>();

    try {

        SolrServer server = new CommonsHttpSolrServer("http://localhost:8983/solr");

        //     
        ((CommonsHttpSolrServer) server).setRequestWriter(new BinaryRequestWriter());

        // getServletContext(), req.getQuery(), req.getLimit()
        if (dicName.equals("diagnosis")) {

            SolrQuery query = new SolrQuery();
            query.setQuery("dicName:diagnosis");
            query.setFilterQueries("diagnosisCode:" + req.getQuery().toUpperCase()
                    + "* OR diagnosisDescription:" + req.getQuery().toLowerCase() + "*");
            query.setRows(20);
            query.setFields("diagnosisCode,diagnosisDescription");
            query.addSortField("diagnosisCode", SolrQuery.ORDER.asc);
            QueryResponse rsp;

            rsp = server.query(query);

            List<Diagnosis> beans = rsp.getBeans(Diagnosis.class);
            for (Diagnosis diaBean : beans) {
                DiagnosisProxy proxy = new DiagnosisProxy();
                proxy.setDiagnosisCode(diaBean.getDiagnosisCode());
                proxy.setDiagnosisDescription(diaBean.getDiagnosisDescription());

                ItemSuggestion item = new ItemSuggestion(
                        proxy.getDiagnosisCode().toUpperCase() + " " + proxy.getDiagnosisDescription() + "...",
                        proxy.getDiagnosisCode().toUpperCase());
                item.setEvent(proxy);
                suggestions.add(item);
            }

            // for (int i = 0; i < 10; i++) {
            // DiagnosisProxy proxy = new DiagnosisProxy();
            // proxy.setDiagnosisCode(req.getQuery() + i);
            // proxy.setDiagnosisDescription(req.getQuery() + i +
            // "  ?");
            //
            // ItemSuggestion item = new ItemSuggestion(" " +
            // proxy.getDiagnosisDescription() + "...", proxy
            // .getDiagnosisCode().toUpperCase());
            // item.setEvent(proxy);
            // suggestions.add(item);
            // }
        } else if (dicName.equals("services")) {

            SolrQuery query = new SolrQuery();
            query.setQuery("dicName:service");
            query.setFilterQueries("serviceCode:" + req.getQuery().toUpperCase() + "* OR serviceAlias:"
                    + req.getQuery().toLowerCase() + "* OR serviceDescription:" + req.getQuery().toLowerCase()
                    + "*");
            query.setRows(20);
            query.setFields("serviceCode,serviceAlias,serviceDescription");
            query.addSortField("serviceCode", SolrQuery.ORDER.asc);
            QueryResponse rsp;

            rsp = server.query(query);

            List<Service> beans = rsp.getBeans(Service.class);
            for (Service srvBean : beans) {
                ServiceProxy proxy = new ServiceProxy();
                proxy.setServiceAlias(srvBean.getServiceAlias());
                proxy.setServiceCode(srvBean.getServiceCode());
                proxy.setServiceDescription(srvBean.getServiceDescription());

                ItemSuggestion item = new ItemSuggestion(proxy.getServiceCode().toUpperCase() + " "
                        + proxy.getServiceAlias() + " - " + proxy.getServiceDescription() + "...",
                        proxy.getServiceCode().toUpperCase());
                item.setEvent(proxy);
                suggestions.add(item);
            }

            //      for (int i = 0; i < 10; i++) {
            //          ServiceProxy proxy = new ServiceProxy();
            //          proxy.setServiceCode(req.getQuery() + i);
            //          proxy.setServiceAlias("alias" + i);
            //          proxy.setServiceDescription(req.getQuery() + i + " ? ??");
            //          proxy.setServiceCount(1);
            //
            //          ItemSuggestion item = new ItemSuggestion(" " + proxy.getServiceDescription() + "...", proxy
            //             .getServiceCode().toUpperCase());
            //          item.setEvent(proxy);
            //          suggestions.add(item);
            //      }
        } else if (dicName.equals("doctors")) {

            // System.out.println("!!!! searche doctors....");
            SolrQuery query = new SolrQuery();
            query.setQuery("dicName:employee");
            // employeeType employeeCode employeeName
            query.setFilterQueries("employeeName:" + req.getQuery().toLowerCase() + "* OR employeeCode:CODE"
                    + req.getQuery().toLowerCase() + "*");
            query.setRows(20);
            // query.setFields("diagnosisCode,diagnosisDescription");
            // query.addSortField("diagnosisCode", SolrQuery.ORDER.asc);
            QueryResponse rsp;

            rsp = server.query(query);

            List<Employee> beans = rsp.getBeans(Employee.class);
            for (Employee emp : beans) {

                // System.out.println("!!! emp="+emp);
                EmployeeProxy proxy = new EmployeeProxy();
                proxy.setEmployeeName(emp.getEmployeeName());
                proxy.setEmployeeCode(emp.getEmployeeCode());
                proxy.setEmployeeType(emp.getEmployeeType());

                ItemSuggestion item = new ItemSuggestion(
                        proxy.getEmployeeCode() + " " + proxy.getEmployeeName(),
                        proxy.getEmployeeName().toUpperCase());
                item.setEvent(proxy);
                suggestions.add(item);
            }
            // for (int i = 0; i < 10; i++) {
            // EmployeeProxy proxy = new EmployeeProxy();
            // proxy.setEmployeeName(req.getQuery().toUpperCase() + i);
            // proxy.setEmployeeCode("CODE" + i);
            // proxy.setEmployeeType(EmployeeProxy.TYPE_DOCTOR);
            //
            // ItemSuggestion item = new ItemSuggestion(" " +
            // proxy.getEmployeeName() + "...", proxy
            // .getEmployeeName().toUpperCase());
            // item.setEvent(proxy);
            // suggestions.add(item);
            // }
        } else if (dicName.equals("operators")) {

            SolrQuery query = new SolrQuery();
            query.setQuery("dicName:employee");
            // employeeType employeeCode employeeName
            query.setFilterQueries("employeeName:" + req.getQuery().toLowerCase() + "*");
            query.setRows(20);
            // query.setFields("diagnosisCode,diagnosisDescription");
            // query.addSortField("diagnosisCode", SolrQuery.ORDER.asc);
            QueryResponse rsp;

            rsp = server.query(query);

            List<Employee> beans = rsp.getBeans(Employee.class);
            for (Employee emp : beans) {

                // System.out.println("!!! emp="+emp);
                EmployeeProxy proxy = new EmployeeProxy();
                proxy.setEmployeeName(emp.getEmployeeName());
                proxy.setEmployeeCode(emp.getEmployeeCode());
                proxy.setEmployeeType(emp.getEmployeeType());

                ItemSuggestion item = new ItemSuggestion(
                        proxy.getEmployeeCode() + " " + proxy.getEmployeeName(),
                        proxy.getEmployeeName().toUpperCase());
                item.setEvent(proxy);
                suggestions.add(item);
            }

            // for (int i = 0; i < 10; i++) {
            // EmployeeProxy proxy = new EmployeeProxy();
            // proxy.setEmployeeName(req.getQuery().toUpperCase() + i);
            // proxy.setEmployeeCode("CODE" + i);
            // proxy.setEmployeeType(EmployeeProxy.TYPE_OPERATOR);
            //
            // ItemSuggestion item = new ItemSuggestion(" " +
            // proxy.getEmployeeName() + "...", proxy
            // .getEmployeeName().toUpperCase());
            // item.setEvent(proxy);
            // suggestions.add(item);
            // }
        } else if (dicName.equals("devices")) {

            for (int i = 0; i < 10; i++) {
                ManufacturerDeviceProxy proxy = new ManufacturerDeviceProxy();
                proxy.setManufacturerModelName(req.getQuery().toUpperCase() + i);
                proxy.setManufacturerModelDescription("? " + i);
                proxy.setManufacturerModelTypeDescription(
                        "? ? ??");
                proxy.setModality("CR");

                ItemSuggestion item = new ItemSuggestion(" " + proxy.getManufacturerModelName() + "...",
                        proxy.getManufacturerModelName().toUpperCase());
                item.setEvent(proxy);
                suggestions.add(item);
            }
        } else if (dicName.equals("patients")) {

            for (int i = 0; i < 10; i++) {
                PatientProxy proxy = new PatientProxy();
                proxy.setPatientName(req.getQuery().toUpperCase() + i);
                proxy.setPatientBirthDate("1974-03-01");
                proxy.setPatientSex("M");
                proxy.setPatientShortName("74");

                ItemSuggestion item = new ItemSuggestion(" " + proxy.getPatientName() + " ("
                        + proxy.getPatientSex() + ")" + proxy.getPatientBirthDate() + "...",
                        proxy.getPatientName().toUpperCase());
                item.setEvent(proxy);
                suggestions.add(item);
            }
        }

    } catch (Exception e) {
        e.printStackTrace();
        throw org.psystems.dicom.browser.server.Util.throwPortalException("Suggestions error! ", e);
    }

    // Now set the suggestions in the response
    resp.setSuggestions(suggestions);

    // Send the response back to the client
    return resp;
}

From source file:org.roda.core.index.utils.SolrUtils.java

public static <T extends IsIndexed> IndexResult<T> find(SolrClient index, Class<T> classToRetrieve,
        Filter filter, Sorter sorter, Sublist sublist, Facets facets, List<String> fieldsToReturn)
        throws GenericException, RequestNotValidException {
    IndexResult<T> ret;/*  w ww .  jav  a  2  s. c  o m*/
    SolrQuery query = new SolrQuery();
    query.setParam("q.op", DEFAULT_QUERY_PARSER_OPERATOR);
    query.setQuery(parseFilter(filter));
    query.setSorts(parseSorter(sorter));
    query.setStart(sublist.getFirstElementIndex());
    query.setRows(sublist.getMaximumElementCount());
    if (!fieldsToReturn.isEmpty()) {
        query.setFields(fieldsToReturn.toArray(new String[fieldsToReturn.size()]));
    }
    parseAndConfigureFacets(facets, query);

    try {
        QueryResponse response = index.query(getIndexName(classToRetrieve).get(0), query);
        ret = queryResponseToIndexResult(response, classToRetrieve, facets, fieldsToReturn);
    } catch (SolrServerException | IOException e) {
        throw new GenericException("Could not query index", e);
    } catch (SolrException e) {
        throw new RequestNotValidException(e);
    } catch (RuntimeException e) {
        throw new GenericException("Unexpected exception while querying index", e);
    }

    return ret;
}

From source file:org.roda.core.index.utils.SolrUtils.java

public static <T extends IsIndexed> IndexResult<T> find(SolrClient index, Class<T> classToRetrieve,
        Filter filter, Sorter sorter, Sublist sublist, Facets facets, User user, boolean justActive,
        List<String> fieldsToReturn) throws GenericException, RequestNotValidException {
    IndexResult<T> ret;// w ww  .j  a  v a2  s.c o  m
    SolrQuery query = new SolrQuery();
    query.setParam("q.op", DEFAULT_QUERY_PARSER_OPERATOR);
    query.setQuery(parseFilter(filter));
    query.setSorts(parseSorter(sorter));
    query.setStart(sublist.getFirstElementIndex());
    query.setRows(sublist.getMaximumElementCount());
    query.setFields(fieldsToReturn.toArray(new String[fieldsToReturn.size()]));
    parseAndConfigureFacets(facets, query);
    if (hasPermissionFilters(classToRetrieve)) {
        query.addFilterQuery(getFilterQueries(user, justActive, classToRetrieve));
    }

    try {
        QueryResponse response = index.query(getIndexName(classToRetrieve).get(0), query);
        ret = queryResponseToIndexResult(response, classToRetrieve, facets, fieldsToReturn);
    } catch (SolrServerException | IOException e) {
        throw new GenericException("Could not query index", e);
    } catch (SolrException e) {
        throw new RequestNotValidException(e.getMessage());
    } catch (RuntimeException e) {
        throw new GenericException("Unexpected exception while querying index", e);
    }

    return ret;
}

From source file:org.sakaiproject.nakamura.upgrade.servlet.TagMigrator.java

License:Apache License

private SolrDocumentList getMoreDocuments(int start) throws SolrServerException {
    SolrQuery query = new SolrQuery("tag:*");
    query.setFields("tag"); // we only need the tag field
    query.setRows(ROWS_PER_SEARCH);/* w w w .j ava  2 s .c om*/
    query.setStart(start);
    // go direct to solr server so we can get all documents more easily
    QueryResponse solrResponse = this.solrSearchService.getServer().query(query);
    LOGGER.info("Got " + solrResponse.getResults().getNumFound() + " tagged documents from solr index; "
            + "this batch starts at " + solrResponse.getResults().getStart());
    return solrResponse.getResults();
}

From source file:org.sleuthkit.autopsy.keywordsearch.AccountsText.java

License:Open Source License

/**
 * Initialize this object with information about which pages/chunks have
 * hits. Multiple calls will not change the initial results.
 *//*ww w.  j  av  a 2 s.c  o m*/
synchronized private void loadPageInfo() {
    if (isPageInfoLoaded) {
        return;
    }
    if (chunkId != null) {//if a chunk is specified, only show that chunk/page
        this.numberPagesForFile = 1;
        this.currentPage = chunkId;
        this.numberOfHitsPerPage.put(chunkId, 0);
        this.pages.add(chunkId);
        this.currentHitPerPage.put(chunkId, 0);
    } else {
        try {
            this.numberPagesForFile = solrServer.queryNumFileChunks(this.solrObjectId);
        } catch (KeywordSearchModuleException | NoOpenCoreException ex) {
            LOGGER.log(Level.WARNING, "Could not get number pages for content " + this.solrDocumentId, ex); //NON-NLS
            return;
        }

        //if has chunks, get pages with hits
        TreeSet<Integer> sortedPagesWithHits = new TreeSet<>();
        SolrQuery q = new SolrQuery();
        q.setShowDebugInfo(DEBUG); //debug
        q.setQuery(queryString);
        q.setFields(Server.Schema.ID.toString()); //for this case we only need the document ids
        q.addFilterQuery(
                Server.Schema.ID.toString() + ":" + this.solrObjectId + Server.CHUNK_ID_SEPARATOR + "*");

        try {
            QueryResponse response = solrServer.query(q, METHOD.POST);
            for (SolrDocument resultDoc : response.getResults()) {
                final String resultDocumentId = resultDoc.getFieldValue(Server.Schema.ID.toString()).toString();
                // Put the solr chunk id in the map
                String resultChunkID = StringUtils.substringAfter(resultDocumentId, Server.CHUNK_ID_SEPARATOR);
                if (StringUtils.isNotBlank(resultChunkID)) {
                    sortedPagesWithHits.add(Integer.parseInt(resultChunkID));
                } else {
                    sortedPagesWithHits.add(0);
                }
            }

        } catch (KeywordSearchModuleException | NoOpenCoreException | NumberFormatException ex) {
            LOGGER.log(Level.WARNING, "Error executing Solr highlighting query: " + keywords, ex); //NON-NLS
        }

        //set page to first page having highlights
        if (sortedPagesWithHits.isEmpty()) {
            this.currentPage = 0;
        } else {
            this.currentPage = sortedPagesWithHits.first();
        }

        for (Integer page : sortedPagesWithHits) {
            numberOfHitsPerPage.put(page, 0); //unknown number of matches in the page
            pages.add(page);
            currentHitPerPage.put(page, 0); //set current hit to 0th
        }
    }

    isPageInfoLoaded = true;
}

From source file:org.sleuthkit.autopsy.keywordsearch.LuceneQuery.java

License:Open Source License

/**
 * Create the query object for the stored keyword
 *
 * @param snippets True if query should request snippets
 * @return// ww w  .j  a  va 2s.  c om
 */
private SolrQuery createAndConfigureSolrQuery(boolean snippets) {
    SolrQuery q = new SolrQuery();
    q.setShowDebugInfo(DEBUG); //debug
    //set query, force quotes/grouping around all literal queries
    final String groupedQuery = KeywordSearchUtil.quoteQuery(keywordStringEscaped);
    String theQueryStr = groupedQuery;
    if (field != null) {
        //use the optional field
        StringBuilder sb = new StringBuilder();
        sb.append(field).append(":").append(groupedQuery);
        theQueryStr = sb.toString();
    }
    q.setQuery(theQueryStr);
    q.setRows(MAX_RESULTS);

    if (snippets) {
        q.setFields(Server.Schema.ID.toString());
    } else {
        q.setFields(Server.Schema.ID.toString());
    }

    for (KeywordQueryFilter filter : filters) {
        q.addFilterQuery(filter.toString());
    }

    if (snippets) {
        q.addHighlightField(Server.Schema.TEXT.toString());
        //q.setHighlightSimplePre("&laquo;"); //original highlighter only
        //q.setHighlightSimplePost("&raquo;");  //original highlighter only
        q.setHighlightSnippets(1);
        q.setHighlightFragsize(SNIPPET_LENGTH);

        //tune the highlighter
        q.setParam("hl.useFastVectorHighlighter", "on"); //fast highlighter scales better than standard one NON-NLS
        q.setParam("hl.tag.pre", "&laquo;"); //makes sense for FastVectorHighlighter only NON-NLS
        q.setParam("hl.tag.post", "&laquo;"); //makes sense for FastVectorHighlighter only NON-NLS
        q.setParam("hl.fragListBuilder", "simple"); //makes sense for FastVectorHighlighter only NON-NLS

        //Solr bug if fragCharSize is smaller than Query string, StringIndexOutOfBoundsException is thrown.
        q.setParam("hl.fragCharSize", Integer.toString(theQueryStr.length())); //makes sense for FastVectorHighlighter only NON-NLS

        //docs says makes sense for the original Highlighter only, but not really
        //analyze all content SLOW! consider lowering
        q.setParam("hl.maxAnalyzedChars", Server.HL_ANALYZE_CHARS_UNLIMITED); //NON-NLS
    }

    return q;
}

From source file:org.xwiki.search.solr.internal.job.IndexerJob.java

License:Open Source License

/**
 * Index document (versions) not yet indexed in the passed wiki.
 * //w ww  .j  a va2s .c  o  m
 * @param wiki the wiki where to search for documents to index
 * @param document the document found
 * @param solrInstance used to start indexing of a document
 * @throws SolrIndexerException when failing to index new documents
 * @throws IllegalArgumentException when failing to index new documents
 * @throws SolrServerException when failing to index new documents
 */
private void addMissing(String wiki, Object[] document, SolrInstance solrInstance)
        throws SolrIndexerException, IllegalArgumentException, SolrServerException {
    String name = (String) document[0];
    String space = (String) document[1];
    String localeString = (String) document[2];
    String version = (String) document[3];

    DocumentReference reference = createDocumentReference(wiki, space, name, localeString);

    SolrQuery solrQuery = new SolrQuery(
            FieldUtils.ID + ':' + ClientUtils.escapeQueryChars(this.solrResolver.getId(reference)));
    solrQuery.addFilterQuery(FieldUtils.VERSION + ':' + ClientUtils.escapeQueryChars(version));
    solrQuery.setFields(FieldUtils.ID);

    QueryResponse response = solrInstance.query(solrQuery);
    if (response.getResults().getNumFound() == 0) {
        this.indexer.index(reference, true);
    }
}

From source file:org.zaizi.sensefy.api.solr.querybuilder.QueryBuilder.java

License:Open Source License

/**
 * return a solr query built with all the parameters in input . Spellcheck
 * included//from   w  ww  .ja va 2  s  .c  om
 * 
 * @param query
 * @param fields
 * @param filters
 * @param start
 * @param rows
 * @param security
 * @param clustering
 * @param sensefyToken
 * @return
 * @throws SensefyException
 */
public static SolrQuery getSolrQuery(String query, String fields, boolean facet,
        FacetConfigurationList facetConfig, String filters, int start, Integer rows, String order,
        boolean security, boolean spellcheck, boolean clustering, Principal user) {

    SensefyUser sensefyUser = SensefyUserMapper.getSensefyUserFromPrincipal(user);

    if (rows == null) {
        rows = DEFAULT_ROWS;
    }
    // retrieve the documents from primary index
    SolrQuery documentsQuery = new SolrQuery(query);
    Set<String> selectedFields = new HashSet<String>();
    documentsQuery.setRows(rows);
    documentsQuery.set("spellcheck", spellcheck);
    documentsQuery.set("clustering", clustering);
    if (fields != null && !fields.isEmpty()) {
        String[] fieldsArray = fields.split(",");
        documentsQuery.setFields(fieldsArray);
    }
    if (filters != null && !filters.isEmpty()) {
        String[] filtersArray = buildFilterQueries(filters.split(","), selectedFields);
        documentsQuery.setFilterQueries(filtersArray);
    }
    if (order != null && !order.isEmpty()) {
        documentsQuery.set(CommonParams.SORT, order);
    }

    if (security) {

        String filterQueryACLs = SecurityQueryBuilder.getSecurityFilterQuery(sensefyUser);
        documentsQuery.addFilterQuery(filterQueryACLs);

    }
    documentsQuery.set("TZ", sensefyUser.getTimezone().getID());
    documentsQuery.setStart(start);
    ModifiableSolrParams querySolrParams = new ModifiableSolrParams();
    if (facet) {
        // facets must be created with proper exclusion tag where needed
        documentsQuery.setFacet(true);
        List<FacetConfiguration> facetConfigurations = facetConfig.getFacetConfigurations();
        for (FacetConfiguration facetConfiguration : facetConfigurations) {
            String tag = null;
            if (selectedFields.contains(facetConfiguration.getField()))
                tag = "tag-" + facetConfiguration.getField();
            facetConfiguration.getSolrFacetParams(querySolrParams, tag);
        }
    }
    documentsQuery.add(querySolrParams);
    return documentsQuery;
}