List of usage examples for org.apache.solr.client.solrj SolrQuery setQuery
public SolrQuery setQuery(String query)
From source file:fr.paris.lutece.plugins.search.solr.business.SolrSearchEngine.java
License:Open Source License
/** * Return search results//from w ww . j a v a 2 s . co m * @param strQuery The search query * @param request The HTTP request * @return Results as a collection of SearchResult */ public List<SearchResult> getSearchResults(String strQuery, HttpServletRequest request) { List<SearchResult> results = new ArrayList<SearchResult>(); SolrClient solrServer = SolrServerService.getInstance().getSolrServer(); if ((solrServer != null) && !strQuery.equals("")) { SolrQuery query = new SolrQuery(); if ((strQuery != null) && (strQuery.length() > 0)) { query.setQuery(strQuery); } String[] userRoles; String[] roles; if (SecurityService.isAuthenticationEnable()) { // authentification on, check roles LuteceUser user = SecurityService.getInstance().getRegisteredUser(request); if (user != null) { userRoles = SecurityService.getInstance().getRolesByUser(user); } else { userRoles = new String[0]; } roles = new String[userRoles.length + 1]; System.arraycopy(userRoles, 0, roles, 0, userRoles.length); roles[roles.length - 1] = Page.ROLE_NONE; String filterRole = buildFilter(SearchItem.FIELD_ROLE, roles); // portlets roles //roles[roles.length - 1] = Portlet.ROLE_NONE; //String filterPortletRole = buildFilter( SearchItem.FIELD_PORTLET_ROLE, roles ); query = query.addFilterQuery(filterRole); //.addFilterQuery( filterPortletRole ); } try { QueryResponse response = solrServer.query(query); SolrDocumentList documentList = response.getResults(); results = SolrUtil.transformSolrDocumentList(documentList); } catch (SolrServerException e) { AppLogService.error(e.getMessage(), e); } catch (IOException e) { AppLogService.error(e.getMessage(), e); } } return results; }
From source file:fr.xebia.cocktail.CocktailRepository.java
License:Apache License
public Collection<Cocktail> find(@Nullable String ingredient, @Nullable String name) { List<String> solrQueryPredicates = Lists.newArrayList(); if (!Strings.isNullOrEmpty(ingredient)) { solrQueryPredicates.add("ingredient:" + ingredient + "*"); }//w ww .j a v a 2 s. c o m if (!Strings.isNullOrEmpty(name)) { solrQueryPredicates.add("name:" + name + "*"); } DBCursor cursor; if (solrQueryPredicates.isEmpty()) { cursor = this.cocktails.find().sort(new BasicDBObject("name", "{x : -1}")); } else { SolrQuery solrQuery = new SolrQuery(); String query = Joiner.on(" AND ").join(solrQueryPredicates); solrQuery.setQuery(query); try { QueryResponse solrResponse = solrServer.query(solrQuery); logger.trace("Response for {}: {}", query, solrResponse); SolrDocumentList docs = solrResponse.getResults(); if (docs.isEmpty()) { return Collections.emptyList(); } Iterable<String> cocktailIds = Iterables.transform(docs, SOLR_DOCUMENT_ID_EXTRACTOR); Iterable<DBObject> cocktailsIdsAsDbObjects = Iterables.transform(cocktailIds, BSON_OBJECT_ID_BUILDER); cursor = this.cocktails.find(new BasicDBObject("$or", cocktailsIdsAsDbObjects)); // TODO : ordering } catch (SolrServerException e) { throw Throwables.propagate(e); } } return Lists.newArrayList(Iterables.transform(cursor, BSON_TO_COCKTAIL)); }
From source file:fr.xebia.cocktail.CocktailRepository.java
License:Apache License
private List<String> suggestCocktailWord(String query, String solrQueryType) { query = Strings.nullToEmpty(query);//from w ww .j a v a2 s .co m if (query.length() < 2) { return Collections.emptyList(); } SolrQuery solrQuery = new SolrQuery(); solrQuery.setQuery(query); solrQuery.setQueryType(solrQueryType); List<String> words = Lists.newArrayList(); try { QueryResponse solrResponse = solrServer.query(solrQuery); logger.trace("Response for {}: {}", query, solrResponse); SpellCheckResponse resp = solrResponse.getSpellCheckResponse(); List<Suggestion> suggestions = resp.getSuggestions(); for (Suggestion suggestion : suggestions) { words.addAll(suggestion.getAlternatives()); } } catch (SolrServerException e) { logger.warn("Silently skip solr exception and return empty result", e); } return words; }
From source file:gr.aueb.service.EmailService.java
public static List<Email> getEmails(List<String> keywords) { String query = getEmailServiceQuery(keywords); SolrQuery solrQuery; solrQuery = new SolrQuery(); if (query.startsWith(" AND")) { query = query.substring(4);//from w ww. j a va2 s . c om } if (query.startsWith("AND")) { query = query.substring(3); } solrQuery.setQuery(query); if (!query.equals("")) { solrQuery.setHighlight(true).setHighlightSnippets(1).setHighlightSimplePost("</strong>") .setHighlightSimplePre("<strong>"); //set other params as needed solrQuery.setParam("hl.fl", "content_t"); solrQuery.setParam("hl.requireFieldMatch", "true"); } solrQuery.setRows(15); String urlString = "http://195.251.252.8:8983/solr/mail"; //SolrClient server = new HttpSolrClient.Builder(urlString).build(); SolrClient server = new HttpSolrClient(urlString); QueryResponse response = null; try { response = server.query(solrQuery); } catch (Exception e) { System.out.println(e); } SolrDocumentList rs = response.getResults(); long numFound = rs.getNumFound(); int numResultsDisplay = (int) numFound; ArrayList<Email> items = new ArrayList<Email>(); ListIterator<SolrDocument> iter = rs.listIterator(); while (iter.hasNext()) { SolrDocument doc = iter.next(); String id = doc.get("messageId").toString(); String from = doc.get("from").toString(); String sentDate = doc.get("sentDate").toString(); String subject = doc.get("subject").toString(); String content = doc.get("content").toString(); items.add(new Email(id, from, sentDate, subject, content)); } return items; }
From source file:influent.server.search.SolrEntitySearch.java
License:MIT License
@Override public FL_SearchResults search(Map<String, List<FL_PropertyMatchDescriptor>> termMap, List<FL_OrderBy> orderBy, long start, long max, FL_LevelOfDetail lod) throws AvroRemoteException { ArrayList<FL_SearchResult> results = new ArrayList<FL_SearchResult>(); SolrEntitySearchIterator ssr;/*from w w w. j a v a 2 s . com*/ // Form the query String searchStr = SearchSolrHelper.toSolrQuery(termMap, getDescriptors(), getPropertyFieldProvider()); // issue the query SolrQuery query = new SolrQuery(); query.setQuery(searchStr); query.setFields("*", "score"); // form a union of sort by fields for all types orderBy = PropertyDescriptorHelper.mapOrderBy(orderBy, getDescriptors().getProperties(), termMap.keySet()); if (orderBy != null) { for (FL_OrderBy ob : orderBy) { String key = (ob.getPropertyKey().equals(FL_ReservedPropertyKey.MATCH.name())) ? "score" : ob.getPropertyKey(); query.addSortField(key, ob.getAscending() ? ORDER.asc : ORDER.desc); } } ssr = buildSolrEntitySearchIterator(getNamespaceHandler(), _solr, query, _config, lod, _applicationConfiguration, getPropertyFieldProvider()); if (start >= 0) { ssr.setStartIndex((int) start); } if (max > 0) { ssr.setMaxResults((int) max); } // Add results from the matching documents while (ssr.hasNext()) { FL_SearchResult fsr = ssr.next(); results.add(fsr); } return FL_SearchResults.newBuilder().setTotal(ssr.getTotalResults()).setResults(results) .setLevelOfDetail(lod).build(); }
From source file:influent.server.search.SolrLinkSearch.java
License:MIT License
@Override public FL_SearchResults search(Map<String, List<FL_PropertyMatchDescriptor>> termMap, List<FL_OrderBy> orderBy, long start, long max, FL_LevelOfDetail levelOfDetail) throws AvroRemoteException { ArrayList<FL_SearchResult> results = new ArrayList<FL_SearchResult>(); SolrLinkSearchIterator ssr;//from ww w.j a v a 2 s .c o m try { List<String> ids = new ArrayList<String>(); // Collect all the ids, for mapping later for (Map.Entry<String, List<FL_PropertyMatchDescriptor>> entry : termMap.entrySet()) { List<FL_PropertyMatchDescriptor> termsByType = entry.getValue(); for (FL_PropertyMatchDescriptor term : termsByType) { // Find keys that are built in ID types for transactions if (term.getKey().equals(FL_RequiredPropertyKey.FROM.name()) || term.getKey().equals(FL_RequiredPropertyKey.TO.name()) || term.getKey().equals(FL_RequiredPropertyKey.ENTITY.name()) || term.getKey().equals(FL_RequiredPropertyKey.LINKED.name())) { // Strip out the native ID Object range = term.getRange(); if (range instanceof FL_SingletonRange) { String val = (String) SingletonRangeHelper.value(range); ids.add(val); } else if (range instanceof FL_ListRange) { List<Object> values = ((FL_ListRange) range).getValues(); List<Object> values2 = new ArrayList<Object>(); for (Object obj : values) { String val = (String) obj; values2.add(val); ids.add(val); } } } } } // Form the query String searchStr = SearchSolrHelper.toSolrQuery(termMap, getDescriptors(), getPropertyFieldProvider()); // issue the query SolrQuery query = new SolrQuery(); query.setQuery(searchStr); query.setFields("*", "score"); String solrGroupField = getDescriptors().getGroupField(); if (solrGroupField != null) { query.setParam("group", true); query.setParam("group.field", solrGroupField); query.setParam("group.limit", levelOfDetail == FL_LevelOfDetail.FULL ? "-1" : "3"); query.setParam("group.ngroups", true); } // form a union of sort by fields for all types orderBy = PropertyDescriptorHelper.mapOrderBy(orderBy, getDescriptors().getProperties(), termMap.keySet()); if (orderBy != null) { for (FL_OrderBy ob : orderBy) { String key = (ob.getPropertyKey().equals(FL_ReservedPropertyKey.MATCH.name())) ? "score" : ob.getPropertyKey(); query.addSortField(key, ob.getAscending() ? ORDER.asc : ORDER.desc); } } ssr = buildSolrLinkSearchIterator(getNamespaceHandler(), _solr, query, _config, levelOfDetail, _applicationConfiguration, getPropertyFieldProvider()); if (start >= 0) { ssr.setStartIndex((int) start); } if (max > 0) { ssr.setMaxResults((int) max); } // Add results from the matching documents while (ssr.hasNext()) { FL_SearchResult fsr = ssr.next(); results.add(fsr); } } catch (Exception e) { throw new AvroRemoteException(e); } return FL_SearchResults.newBuilder().setTotal((long) ssr.getTotalResults()).setResults(results) .setLevelOfDetail(levelOfDetail).build(); }
From source file:info.papyri.dispatch.atom.AtomFeedServlet.java
License:Creative Commons License
/** * Assigns the passed parameter values into a SolrQuery object. * //from w w w . j a va 2 s .co m * Note that if any single passed date cannot be parsed, a parse exception * will be thrown and the query abandoned. * * @param dateParams * @param page * @return * @throws ParseException */ SolrQuery buildSolrQuery(EnumMap<TimeParam, String> dateParams, int page, SearchType searchType) throws ParseException { SolrQuery sq = new SolrQuery(); String q = ""; sq.addSortField(searchType.getDateField().name(), SolrQuery.ORDER.desc); sq.setRows(entriesPerPage); sq.setStart((page - 1) * entriesPerPage); for (Map.Entry<TimeParam, String> entry : dateParams.entrySet()) { String rangeString = generateRangeString(entry.getKey(), entry.getValue()); if (!"".equals(q)) q += " AND "; q += searchType.getDateField().name() + ":" + rangeString; } if (q.equals("")) q = searchType.getDateField().name() + ":[* TO *]"; sq.setQuery(q); return sq; }
From source file:io.vertigo.dynamo.plugins.search.solr.SolrStatement.java
License:Apache License
/** * @return Nombre de document indexs//from ww w . j a va 2s .c o m */ public long count() { final SolrQuery solrQuery = new SolrQuery(); solrQuery.set(CommonParams.ROWS, 0); solrQuery.setQuery("*:*"); final QueryResponse queryResponse = executeQuery(solrQuery); return queryResponse.getResults().getNumFound(); }
From source file:io.vertigo.dynamo.plugins.search.solr.SolrStatement.java
License:Apache License
private static SolrQuery createSolrQuery(final SearchQuery searchQuery, final IndexFieldNameResolver indexFieldNameResolver, final FacetedQuery filtersQuery, final int rowsPerQuery) { final SolrQuery solrQuery = new SolrQuery(); solrQuery.set(CommonParams.ROWS, rowsPerQuery); solrQuery.setFields(SolrDocumentCodec.URN, SolrDocumentCodec.FULL_RESULT); if (searchQuery.isSortActive()) { final DtField sortField = searchQuery.getIndexDefinition().getIndexDtDefinition() .getField(searchQuery.getSortField()); final String indexSortFieldName = indexFieldNameResolver.obtainIndexFieldName(sortField); solrQuery.addSortField(indexSortFieldName, searchQuery.getSortAsc() ? ORDER.asc : ORDER.desc); }//ww w.j a v a2s . com //solrQuery.set(CommonParams.START, 0); //peut servir d'offset final StringBuilder query = new StringBuilder(); if (searchQuery.isBoostMostRecent()) { appendBoostMostRecent(searchQuery, query); } query.append(translateToSolr(searchQuery.getListFilter(), indexFieldNameResolver)); solrQuery.setQuery(query.toString()); for (final ListFilter facetQuery : filtersQuery.getListFilters()) { solrQuery.addFilterQuery(translateToSolr(facetQuery, indexFieldNameResolver)); } solrQuery.setHighlight(true); solrQuery.setParam("hl.fl", "*"); solrQuery.setHighlightSnippets(3); solrQuery.setParam("hl.mergeContiguous", true); //Ci dessous : pour avoir les facettes avec un compteur de doc 0 //Pour l'instant dsactiv car elles peuvent tre dduites des dfinitions de facettes sauf pour celles tires des mots du dictionnaires dont on ne maitrise pas la quantit //solrQuery.setParam("facet.missing", true); return solrQuery; }
From source file:it.damore.solr.importexport.App.java
License:Open Source License
/** * @param client//from ww w . j a v a 2 s . com * @param outputFile * @throws SolrServerException * @throws IOException */ private static void readAllDocuments(HttpSolrClient client, File outputFile) throws SolrServerException, IOException { SolrQuery solrQuery = new SolrQuery(); solrQuery.setQuery("*:*"); if (config.getFilterQuery() != null) { solrQuery.addFilterQuery(config.getFilterQuery()); } solrQuery.setRows(0); solrQuery.addSort(config.getUniqueKey(), ORDER.asc); // Pay attention to this line String cursorMark = CursorMarkParams.CURSOR_MARK_START; TimeZone.setDefault(TimeZone.getTimeZone("UTC")); // objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, true); DateFormat df = new SimpleDateFormat("YYYY-MM-dd'T'HH:mm:sss'Z'"); objectMapper.setDateFormat(df); objectMapper.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true); QueryResponse r = client.query(solrQuery); long nDocuments = r.getResults().getNumFound(); logger.info("Found " + nDocuments + " documents"); if (!config.getDryRun()) { logger.info("Creating " + config.getFileName()); Set<SkipField> skipFieldsEquals = config.getSkipFieldsSet().stream() .filter(s -> s.getMatch() == MatchType.EQUAL).collect(Collectors.toSet()); Set<SkipField> skipFieldsStartWith = config.getSkipFieldsSet().stream() .filter(s -> s.getMatch() == MatchType.STARTS_WITH).collect(Collectors.toSet()); Set<SkipField> skipFieldsEndWith = config.getSkipFieldsSet().stream() .filter(s -> s.getMatch() == MatchType.ENDS_WITH).collect(Collectors.toSet()); try (PrintWriter pw = new PrintWriter(outputFile)) { solrQuery.setRows(200); boolean done = false; while (!done) { solrQuery.set(CursorMarkParams.CURSOR_MARK_PARAM, cursorMark); QueryResponse rsp = client.query(solrQuery); String nextCursorMark = rsp.getNextCursorMark(); for (SolrDocument d : rsp.getResults()) { skipFieldsEquals.forEach(f -> d.removeFields(f.getText())); if (skipFieldsStartWith.size() > 0 || skipFieldsEndWith.size() > 0) { Map<String, Object> collect = d.entrySet().stream() .filter(e -> !skipFieldsStartWith.stream() .filter(f -> e.getKey().startsWith(f.getText())).findFirst() .isPresent()) .filter(e -> !skipFieldsEndWith.stream() .filter(f -> e.getKey().endsWith(f.getText())).findFirst().isPresent()) .collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue())); pw.write(objectMapper.writeValueAsString(collect)); } else { pw.write(objectMapper.writeValueAsString(d)); } pw.write("\n"); } if (cursorMark.equals(nextCursorMark)) { done = true; } cursorMark = nextCursorMark; } } } }