List of usage examples for org.apache.solr.client.solrj SolrQuery addTermsField
public SolrQuery addTermsField(String field)
From source file:com.frank.search.solr.core.TermsQueryParser.java
License:Apache License
protected void appendTermsFieldToSolrQuery(Field field, SolrQuery solrQuery) { if (field != null && StringUtils.hasText(field.getName())) { solrQuery.addTermsField(field.getName()); }/*from w w w . j av a 2 s . c o m*/ }
From source file:com.temenos.interaction.commands.solr.TermsCommand.java
License:Open Source License
public Result execute(InteractionContext ctx) { MultivaluedMap<String, String> queryParams = ctx.getQueryParameters(); String entityName = ctx.getCurrentState().getEntityName(); try {//from w w w . j a va2 s . c o m String queryStr = queryParams.getFirst("q"); SolrQuery query = new SolrQuery(); query.setRequestHandler("/terms"); // query.setFields("id", "name", "mnemonic", "address", "postcode"); query.setQuery(queryStr); // TODO make these configurable query.addTermsField("name"); query.addTermsField("mnemonic"); query.setTermsPrefix(queryStr); query.setTermsSortString("count"); query.setTerms(true); query.setTermsLimit(10); QueryResponse rsp = solrServer.query(query); ctx.setResource(buildCollectionResource(entityName, "name", rsp.getTermsResponse().getTermMap())); return Result.SUCCESS; } catch (SolrServerException e) { logger.error("An unexpected error occurred while querying Solr", e); } return Result.FAILURE; }
From source file:cz.incad.vdk.client.tools.Search.java
License:Open Source License
public JSONArray getSuggest() { try {//from www . ja v a2s. c o m String q = req.getParameter("term"); SolrQuery query = new SolrQuery(); if (q == null || q.equals("")) { return new JSONArray(); } query.setParam(CommonParams.QT, "/terms"); query.setTerms(true); query.setTermsPrefix(q.toUpperCase()); query.setTermsLowerInclusive(true); query.addTermsField("title_suggest"); JSONArray ja = new JSONObject(IndexerQuery.terms(query)).getJSONObject("terms") .getJSONArray("title_suggest"); JSONArray ret = new JSONArray(); for (int i = 0; i < ja.length(); i = i + 2) { String val = ja.getString(i); ret.put(new JSONObject().put("value", val).put("label", val.substring(val.indexOf("##") + 2))); } return ret; } catch (IOException ex) { Logger.getLogger(Search.class.getName()).log(Level.SEVERE, null, ex); return new JSONArray(); } }
From source file:fr.cnes.sitools.metacatalogue.resources.opensearch.OpensearchDescribeResource.java
License:Open Source License
/** * Create a description for the metacatalogue containing all the request parameters, their types and enumeration * /* www .ja v a 2s . c om*/ * @return a description for the metacatalogue */ private Describe createDescribe() { Describe describe = new Describe(); SolrServer server = SolRUtils.getSolRServer(solrCoreUrl); if (server == null) { throw new ResourceException(Status.SERVER_ERROR_INTERNAL, "Solr core : " + solrCoreUrl + " not reachable"); } LukeRequest request = new LukeRequest(); // request.setNumTerms(maxTopTerms); try { List<Filter> filters = new ArrayList<Filter>(); LukeResponse response = request.process(server); int numDocs = response.getNumDocs(); Map<String, LukeResponse.FieldInfo> fields = response.getFieldInfo(); for (Entry<String, LukeResponse.FieldInfo> field : fields.entrySet()) { LukeResponse.FieldInfo fieldInfo = field.getValue(); String fieldName = fieldInfo.getName(); boolean indexed = false; EnumSet<FieldFlag> flags = FieldInfo.parseFlags(fieldInfo.getSchema()); indexed = (flags != null && flags.contains(FieldFlag.INDEXED)); if (indexed && addToDescription(fieldName)) { // make a terms query to get the top terms SolrQuery query = new SolrQuery(); query.setRequestHandler("/terms"); query.setTerms(true); query.addTermsField(fieldName); query.setTermsLimit(maxTopTerms); query.setTermsMinCount(1); QueryRequest termsRequest = new QueryRequest(query); TermsResponse termsResponse = termsRequest.process(server).getTermsResponse(); List<Term> terms = termsResponse.getTerms(fieldName); Filter filter = new Filter(); filter.setId(fieldName); filter.setTitle(fieldName); if (canBeCategorised(terms)) { filter.setType(FilterType.enumeration); filter.setPopulation(numDocs); filter.setSon(createSons(terms)); } else { filter.setType(getFilterType(fieldInfo.getType())); } filters.add(filter); } } describe.setFilters(filters); return describe; } catch (SolrServerException e) { throw new ResourceException(Status.SERVER_ERROR_INTERNAL, e.getMessage(), e); } catch (IOException e) { throw new ResourceException(Status.SERVER_ERROR_INTERNAL, e.getMessage(), e); } }
From source file:fr.cnes.sitools.metacatalogue.resources.suggest.OpensearchSuggestResource.java
License:Open Source License
@Get public List<SuggestDTO> suggest(Variant variant) { String query = getRequest().getResourceRef().getQueryAsForm().getFirstValue("q"); if (query == null || query.isEmpty()) { getResponse().setStatus(Status.CLIENT_ERROR_BAD_REQUEST, "No suggestion parameter"); return null; }/*www . j av a 2s. c o m*/ try { ThesaurusSearcher searcher = new ThesaurusSearcher(thesaurusName); List<SuggestDTO> suggests = new ArrayList<SuggestDTO>(); List<Concept> concepts = searcher.searchNarrowersBroader(query + "*", getLanguage()); for (Concept concept : concepts) { SuggestDTO suggestDTO = new SuggestDTO(); suggestDTO.setSuggestion(concept.getProperties().get("prefLabelNarrower").toString()); suggestDTO.setSuggestionAltLabel(concept.getProperties().get("altLabelNarrower").toString()); suggests.add(suggestDTO); } // get suggestion number in the metacatalogue then if (suggests.size() > 0) { SolrServer server = getSolrServer(getContext()); SolrQuery solrQuery = new SolrQuery(); solrQuery.setRequestHandler("/terms"); solrQuery.setTerms(true); solrQuery.setTermsLimit(-1); solrQuery.addTermsField(MetacatalogField._CONCEPTS.getField()); QueryResponse rsp; try { QueryRequest request = new QueryRequest(solrQuery); rsp = request.process(server); TermsResponse termsResponse = rsp.getTermsResponse(); List<TermsResponse.Term> terms = termsResponse.getTerms(MetacatalogField._CONCEPTS.getField()); Map<String, Long> map = createMapFromTerms(terms); Long nb = null; for (SuggestDTO suggest : suggests) { if (map != null) { nb = map.get(suggest.getSuggestionAltLabel()); } if (nb == null) { suggest.setNb(0); } else { suggest.setNb(nb); } } } catch (SolrServerException e) { getLogger().warning("Cannot access Solr server no suggestion number returned"); } } return suggests; } catch (IOException e) { getResponse().setStatus(Status.SERVER_ERROR_INTERNAL, "Cannot read Thesaurs : " + thesaurusName); return null; } }
From source file:org.sleuthkit.autopsy.keywordsearch.TermComponentQuery.java
License:Open Source License
protected SolrQuery createQuery() { final SolrQuery q = new SolrQuery(); q.setRequestHandler(TERMS_HANDLER);//from w w w . j a va2 s. c om q.setTerms(true); q.setTermsLimit(TERMS_UNLIMITED); q.setTermsRegexFlag("case_insensitive"); //NON-NLS //q.setTermsLimit(200); //q.setTermsRegexFlag(regexFlag); //q.setTermsRaw(true); q.setTermsRegex(queryEscaped); q.addTermsField(TERMS_SEARCH_FIELD); q.setTimeAllowed(TERMS_TIMEOUT); return q; }
From source file:org.sleuthkit.autopsy.keywordsearch.TermsComponentQuery.java
License:Open Source License
/** * Executes the regex query as a two step operation. In the first step, the * Solr terms component is used to find any terms in the index that match * the regex. In the second step, term queries are executed for each matched * term to produce the set of keyword hits for the regex. * * @return A QueryResult object or null. * * @throws NoOpenCoreException//from w w w . j a v a2 s. com */ @Override public QueryResults performQuery() throws KeywordSearchModuleException, NoOpenCoreException { /* * Do a query using the Solr terms component to find any terms in the * index that match the regex. */ final SolrQuery termsQuery = new SolrQuery(); termsQuery.setRequestHandler(SEARCH_HANDLER); termsQuery.setTerms(true); termsQuery.setTermsRegexFlag(CASE_INSENSITIVE); termsQuery.setTermsRegex(searchTerm); termsQuery.addTermsField(SEARCH_FIELD); termsQuery.setTimeAllowed(TERMS_SEARCH_TIMEOUT); termsQuery.setShowDebugInfo(DEBUG_FLAG); termsQuery.setTermsLimit(MAX_TERMS_QUERY_RESULTS); List<Term> terms = KeywordSearch.getServer().queryTerms(termsQuery).getTerms(SEARCH_FIELD); /* * Do a term query for each term that matched the regex. */ QueryResults results = new QueryResults(this, keywordList); for (Term term : terms) { /* * If searching for credit card account numbers, do a Luhn check on * the term and discard it if it does not pass. */ if (keyword.getArtifactAttributeType() == ATTRIBUTE_TYPE.TSK_CARD_NUMBER) { Matcher matcher = CREDIT_CARD_NUM_PATTERN.matcher(term.getTerm()); matcher.find(); final String ccn = CharMatcher.anyOf(" -").removeFrom(matcher.group("ccn")); if (false == CREDIT_CARD_NUM_LUHN_CHECK.isValid(ccn)) { continue; } } /* * Do an ordinary query with the escaped term and convert the query * results into a single list of keyword hits without duplicates. * * Note that the filters field appears to be unused. There is an old * comment here, what does it mean? "Note: we can't set filter query * on terms query but setting filter query on fileResults query will * yield the same result." The filter is NOT being added to the term * query. */ String escapedTerm = KeywordSearchUtil.escapeLuceneQuery(term.getTerm()); LuceneQuery termQuery = new LuceneQuery(keywordList, new Keyword(escapedTerm, true)); filters.forEach(termQuery::addFilter); // This appears to be unused QueryResults termQueryResult = termQuery.performQuery(); Set<KeywordHit> termHits = new HashSet<>(); for (Keyword word : termQueryResult.getKeywords()) { termHits.addAll(termQueryResult.getResults(word)); } results.addResult(new Keyword(term.getTerm(), false), new ArrayList<>(termHits)); } return results; }
From source file:peltomaa.sukija.Query.java
License:Open Source License
public void query(String text) { try {/*from w ww . j a va 2 s.c o m*/ SolrQuery query = new SolrQuery(); query.setQuery(text); query.setParam("rows", "1000"); query.addTermsField("text"); query.setTerms(true); query.setParam("hl.useFastVectorHighlighter", "true"); query.setParam("hl.mergeContiguous", "true"); // query.setParam ("hl.fragsize", "0"); query.setParam("hl.maxAnalyzedChars", "-1"); // To choose a different request handler, for example, just set the qt parameter. query.set("qt", "/sukija"); QueryResponse response = server.query(query); // for (String s : query.getTermsFields()) System.out.println ("Field " + s); // QueryResponsePrinter.print (System.out, response); SolrDocumentList documents = response.getResults(); if (documents == null) { messageField.setText("Sukija.java: documents == null: ohjelmassa on virhe."); System.exit(1); } setMessage(documents.size()); if (documents.size() == 0) { editorPane.setText(""); } else { editorPane.setText(getText(response)); editorPane.setCaretPosition(0); } } catch (SolrServerException ex) { messageField.setText(ex.getMessage()); } catch (Exception ex) { messageField.setText(ex.getMessage()); } }