List of usage examples for org.apache.solr.client.solrj SolrQuery setIncludeScore
public SolrQuery setIncludeScore(boolean includeScore)
From source file:com.frank.search.solr.core.SolrTemplate.java
License:Apache License
final QueryResponse query(SolrDataQuery query, Class<?> clazz) { Assert.notNull(query, "Query must not be 'null'"); SolrQuery solrQuery = queryParsers.getForClass(query.getClass()).constructSolrQuery(query); if (clazz != null) { SolrPersistentEntity<?> persistedEntity = mappingContext.getPersistentEntity(clazz); if (persistedEntity.hasScoreProperty()) { solrQuery.setIncludeScore(true); }// w ww . j a va 2 s . c o m } LOGGER.debug("Executing query '" + solrQuery + "' against solr."); return executeSolrQuery(solrQuery); }
From source file:com.liferay.portal.search.solr.internal.SolrIndexSearcher.java
License:Open Source License
protected QueryResponse doSearch(SearchContext searchContext, Query query, int start, int end, boolean count) throws Exception { QueryConfig queryConfig = query.getQueryConfig(); SolrQuery solrQuery = new SolrQuery(); if (!count) { addFacets(solrQuery, searchContext); addHighlights(solrQuery, queryConfig); addPagination(solrQuery, start, end); addSelectedFields(solrQuery, queryConfig); addSort(solrQuery, searchContext.getSorts()); solrQuery.setIncludeScore(queryConfig.isScoreEnabled()); } else {//from w ww . j a v a2 s . co m solrQuery.setRows(0); } String queryString = translateQuery(query, searchContext); solrQuery.setQuery(queryString); String filterQuery = _filterTranslator.translate(query.getPreBooleanFilter(), searchContext); solrQuery.setFilterQueries(filterQuery); QueryResponse queryResponse = executeSearchRequest(solrQuery); if (_log.isInfoEnabled()) { _log.info("The search engine processed " + solrQuery.getQuery() + " in " + queryResponse.getElapsedTime() + " ms"); } return queryResponse; }
From source file:com.liferay.portal.search.solr.SolrIndexSearcher.java
License:Open Source License
protected QueryResponse search(SearchContext searchContext, Query query, int start, int end, boolean count) throws Exception { SolrQuery solrQuery = new SolrQuery(); if (count) {/* w w w . j ava2 s . co m*/ solrQuery.setRows(0); } else { QueryConfig queryConfig = query.getQueryConfig(); addFacets(solrQuery, searchContext); addHighlights(solrQuery, queryConfig); addPagination(solrQuery, start, end); addSelectedFields(solrQuery, queryConfig); addSort(solrQuery, searchContext.getSorts()); solrQuery.setIncludeScore(queryConfig.isScoreEnabled()); } translateQuery(solrQuery, searchContext, query); return _solrServer.query(solrQuery, METHOD.POST); }
From source file:com.liferay.portal.search.solr.SolrIndexSearcherImpl.java
License:Open Source License
protected SolrQuery translateQuery(long companyId, Query query, Sort[] sorts, int start, int end) throws Exception { QueryTranslatorUtil.translateForSolr(query); String queryString = query.toString(); QueryConfig queryConfig = query.getQueryConfig(); SolrQuery solrQuery = new SolrQuery(); solrQuery.setHighlight(queryConfig.isHighlightEnabled()); solrQuery.setHighlightFragsize(queryConfig.getHighlightFragmentSize()); solrQuery.setHighlightSnippets(queryConfig.getHighlightSnippetSize()); solrQuery.setIncludeScore(queryConfig.isScoreEnabled()); solrQuery.setQuery(queryString);/*www .j a v a 2 s.c o m*/ if ((start == QueryUtil.ALL_POS) && (end == QueryUtil.ALL_POS)) { solrQuery.setRows(0); } else { solrQuery.setRows(end - start); solrQuery.setStart(start); } if ((sorts != null) && (sorts.length > 0)) { for (Sort sort : sorts) { if (sort == null) { continue; } String sortFieldName = sort.getFieldName(); if (ArrayUtil.contains(PortletPropsValues.SOLR_SORTABLE_TEXT_FIELDS, sortFieldName)) { sortFieldName = GetterUtil.getString( PortletProps.get(PortletPropsKeys.SOLR_COPY_FIELDS, new Filter(sortFieldName))); } ORDER order = ORDER.asc; if (sortFieldName == null) { sortFieldName = "score"; order = ORDER.desc; } else if (sort.isReverse()) { order = ORDER.desc; } solrQuery.addSortField(sortFieldName, order); } } return solrQuery; }
From source file:com.sindicetech.siren.solr.analysis.TestASCIIFoldingExpansionFilterFactory.java
License:Open Source License
/** * SRN-96//ww w.ja va 2 s .c om */ @Test public void testASCIIFoldingExpansion() throws IOException, SolrServerException { this.addJsonString("1", " { \"value\" : \"cafe\" } "); this.addJsonString("2", " { \"value\" : \"caf\" } "); SolrQuery query = new SolrQuery(); query.setQuery("cafe"); query.setRequestHandler("keyword"); query.setIncludeScore(true); // should match the two documents, with same score QueryResponse response = getWrapper().getServer().query(query); SolrDocumentList docList = response.getResults(); assertEquals(2, docList.getNumFound()); float score1 = (Float) docList.get(0).getFieldValue("score"); float score2 = (Float) docList.get(1).getFieldValue("score"); Assert.assertTrue("Score should be identical", score1 == score2); // should match the two documents, but should assign different score // id2 should receive better score than id1 query = new SolrQuery(); query.setQuery("caf"); query.setRequestHandler("keyword"); query.setIncludeScore(true); response = getWrapper().getServer().query(query); docList = response.getResults(); assertEquals(2, docList.getNumFound()); if (docList.get(0).getFieldValue("url").equals("id1")) { score1 = (Float) docList.get(0).getFieldValue("score"); score2 = (Float) docList.get(1).getFieldValue("score"); } else { score2 = (Float) docList.get(0).getFieldValue("score"); score1 = (Float) docList.get(1).getFieldValue("score"); } Assert.assertTrue("id2 should get higher score than id1", score1 < score2); }
From source file:com.smartitengineering.common.dao.search.solr.SolrFreeTextSearchDao.java
License:Open Source License
@Override public SearchResult<T> detailedSearch(List<QueryParameter> parameters) { SolrQuery query = new SolrQuery(); for (QueryParameter param : parameters) { switch (param.getParameterType()) { case PARAMETER_TYPE_PROPERTY: StringLikeQueryParameter queryParameter = QueryParameterCastHelper.STRING_PARAM_HELPER.cast(param); if (queryParameter.getPropertyName().equals("q")) { String queryString = queryParameter.getValue(); query.setQuery(queryString); } else { query.add(queryParameter.getPropertyName(), queryParameter.getValue()); }// www.j av a 2 s .co m break; case PARAMETER_TYPE_ORDER_BY: SimpleNameValueQueryParameter<Order> parameter = QueryParameterCastHelper.SIMPLE_PARAM_HELPER .cast(param); ORDER order = parameter.getValue().equals(Order.ASC) ? ORDER.asc : ORDER.desc; query.setSortField(parameter.getPropertyName(), order); break; case PARAMETER_TYPE_MAX_RESULT: ValueOnlyQueryParameter<Integer> valParam = QueryParameterCastHelper.VALUE_PARAM_HELPER.cast(param); Integer maxRows = valParam.getValue(); query.setRows(maxRows); break; case PARAMETER_TYPE_FIRST_RESULT: ValueOnlyQueryParameter<Integer> firstParam = QueryParameterCastHelper.VALUE_PARAM_HELPER .cast(param); Integer firstResult = firstParam.getValue(); query.setStart(firstResult); break; default: throw new UnsupportedOperationException("Only property and order by query parameter is supported!"); } } query.setIncludeScore(true); final SearchResult<MultivalueMap<String, Object>> mainResult = queryDao.getResult(query); final Collection<MultivalueMap<String, Object>> result = mainResult.getResult(); final Collection<T> convertedResult = adapter .convertInversely(result.toArray(new MultivalueMap[result.size()])); Iterator<T> resultItr = convertedResult.iterator(); while (resultItr.hasNext()) { T next = resultItr.next(); if (next == null) { resultItr.remove(); } } final SearchResult<T> actualResult = new SearchResult<T>(convertedResult, mainResult); return actualResult; }
From source file:de.unidue.inf.is.ezdl.dlwrapper.wrappers.AbstractSolrWrapper.java
License:Open Source License
@Override public final StoredDocumentList process(DocumentQuery documentQuery) { String solrQueryString = queryConverter.convert(documentQuery.getQuery()); getLogger().info("Query is: " + solrQueryString); SolrQuery query = new SolrQuery(); query.setIncludeScore(true); query.setRows(getMaxNumberOfResults()); query.setQuery(solrQueryString);//from www . j a v a 2s .c o m try { QueryResponse response = server.query(query); SolrDocumentList hits = response.getResults(); StoredDocumentList result = new StoredDocumentList(); for (int i = 0; (i < hits.size()) && !isHalted(); i++) { SolrDocument doc = hits.get(i); StoredDocument stored = readDocumentFromSolrIndex(doc); result.add(stored); } if (!isHalted()) { return result; } else { return new StoredDocumentList(); } } catch (SolrServerException e) { getLogger().error(e.getMessage(), e); } return new StoredDocumentList(); }
From source file:de.unidue.inf.is.ezdl.dlwrapper.wrappers.AbstractSolrWrapper.java
License:Open Source License
/** * Retrieves Solr document by its id./*www.j a v a2s . c o m*/ * * @param id * The id * @param field * The id field * @return The Solr document with the specified id */ protected final SolrDocument retrieveSolrDocumentForId(String id, Field field) { SolrQuery query = new SolrQuery(); query.setIncludeScore(true); query.setRows(1); QueryNodeCompare queryNodeCompare = new QueryNodeCompare(field, Predicate.EQ, id); query.setQuery(queryConverter.convert(new DefaultQuery(queryNodeCompare))); QueryResponse response; try { response = server.query(query); SolrDocumentList hits = response.getResults(); if (hits.size() == 1) { return hits.get(0); } } catch (SolrServerException e) { getLogger().error(e.getMessage(), e); } return null; }
From source file:edu.usu.sdl.openstorefront.service.SearchServiceImpl.java
License:Apache License
@Override public List<ComponentSearchView> getSearchItems(SearchQuery query, FilterQueryParams filter) { // use for advanced search with And - Or combinations on separate fields String queryOperator = " " + SolrAndOr.OR + " "; String myQueryString;/* ww w . j a v a 2 s. c o m*/ // If incoming query string is blank, default to solar *:* for the full query if (StringUtils.isNotBlank(query.getQuery())) { StringBuilder queryData = new StringBuilder(); Field fields[] = SolrComponentModel.class.getDeclaredFields(); for (Field field : fields) { org.apache.solr.client.solrj.beans.Field fieldAnnotation = field .getAnnotation(org.apache.solr.client.solrj.beans.Field.class); if (fieldAnnotation != null && field.getType() == String.class) { String name = field.getName(); if (StringUtils.isNotBlank(fieldAnnotation.value()) && org.apache.solr.client.solrj.beans.Field.DEFAULT .equals(fieldAnnotation.value()) == false) { name = fieldAnnotation.value(); } queryData.append(SolrEquals.EQUAL.getSolrOperator()).append(name) .append(SolrManager.SOLR_QUERY_SEPERATOR).append(query.getQuery()) .append(queryOperator); } } myQueryString = queryData.toString(); if (myQueryString.endsWith(queryOperator)) { queryData.delete((myQueryString.length() - (queryOperator.length())), myQueryString.length()); myQueryString = queryData.toString(); } } else { myQueryString = SolrManager.SOLR_ALL_QUERY; } log.log(Level.FINER, myQueryString); // execute the searchComponent method and bring back from solr a list array List<SolrComponentModel> resultsList = new ArrayList<>(); try { SolrQuery solrQuery = new SolrQuery(); solrQuery.setQuery(myQueryString); // fields to be returned back from solr solrQuery.setFields(SolrComponentModel.ID_FIELD, SolrComponentModel.ISCOMPONENT_FIELD); solrQuery.setStart(filter.getOffset()); solrQuery.setRows(filter.getMax()); Field sortField = ReflectionUtil.getField(new SolrComponentModel(), filter.getSortField()); if (sortField != null) { String sortFieldText = filter.getSortField(); org.apache.solr.client.solrj.beans.Field fieldAnnotation = sortField .getAnnotation(org.apache.solr.client.solrj.beans.Field.class); if (fieldAnnotation != null) { sortFieldText = fieldAnnotation.value(); } SolrQuery.ORDER order = SolrQuery.ORDER.desc; if (OpenStorefrontConstant.SORT_ASCENDING.equalsIgnoreCase(filter.getSortOrder())) { order = SolrQuery.ORDER.asc; } solrQuery.addSort(sortFieldText, order); } solrQuery.setIncludeScore(true); QueryResponse response = SolrManager.getServer().query(solrQuery); SolrDocumentList results = response.getResults(); DocumentObjectBinder binder = new DocumentObjectBinder(); resultsList = binder.getBeans(SolrComponentModel.class, results); } catch (SolrServerException ex) { throw new OpenStorefrontRuntimeException("Search Failed", "Contact System Admin. Seach server maybe Unavailable", ex); } catch (Exception ex) { log.log(Level.WARNING, "Solr query failed unexpectly; likely bad input.", ex); } //Pulling the full object on the return List<ComponentSearchView> views = new ArrayList<>(); List<String> componentIds = new ArrayList<>(); for (SolrComponentModel result : resultsList) { if (result.getIsComponent()) { componentIds.add(result.getId()); } } //remove bad indexes, if any List<ComponentSearchView> componentSearchViews = getComponentService().getSearchComponentList(componentIds); Set<String> goodComponentIdSet = new HashSet<>(); for (ComponentSearchView view : componentSearchViews) { goodComponentIdSet.add(view.getComponentId()); } for (String componentId : componentIds) { if (goodComponentIdSet.contains(componentId) == false) { log.log(Level.FINE, MessageFormat.format("Removing bad index: {0}", componentId)); deleteById(componentId); } } views.addAll(componentSearchViews); List<ComponentSearchView> articleViews = getAttributeService().getArticlesSearchView(); Map<String, ComponentSearchView> allViews = new HashMap<>(); for (ComponentSearchView componentSearchView : articleViews) { AttributeCodePk attributeCodePk = new AttributeCodePk(); attributeCodePk.setAttributeType(componentSearchView.getArticleAttributeType()); attributeCodePk.setAttributeCode(componentSearchView.getArticleAttributeCode()); allViews.put(attributeCodePk.toKey(), componentSearchView); } for (SolrComponentModel result : resultsList) { if (result.getIsComponent() == false) { ComponentSearchView view = allViews.get(result.getId()); if (view != null) { views.add(view); } else { log.log(Level.FINE, MessageFormat.format("Removing bad index: {0}", result.getId())); deleteById(result.getId()); } } } //TODO: Get the score and sort by score return views; }
From source file:fr.aliacom.obm.common.contact.ContactDao.java
License:Open Source License
private List<Contact> searchContact(AccessToken at, List<AddressBook> addrBooks, Connection con, String querys, int limit) throws MalformedURLException, SQLException { List<Contact> ret = new LinkedList<Contact>(); Set<Integer> evtIds = new HashSet<Integer>(); PreparedStatement ps = null;//from w ww.j a v a 2 s .co m ResultSet rs = null; try { if (addrBooks.size() > 0) { SolrHelper solrHelper = solrHelperFactory.createClient(at); CommonsHttpSolrServer solrServer = solrHelper.getSolrContact(); StringBuilder sb = new StringBuilder(); sb.append("-is:archive "); sb.append("+addressbookId:("); int idx = 0; for (AddressBook book : addrBooks) { if (idx > 0) { sb.append(" OR "); } sb.append(book.getUid()); idx++; } sb.append(")"); if (querys != null && !"".equals(querys)) { sb.append(" +(displayname:("); sb.append(querys.toLowerCase()); sb.append("*) OR firstname:("); sb.append(querys.toLowerCase()); sb.append("*) OR lastname:("); sb.append(querys.toLowerCase()); sb.append("*) OR email:("); sb.append(querys.toLowerCase()); sb.append("*))"); } SolrQuery params = new SolrQuery(); params.setQuery(sb.toString()); params.setIncludeScore(true); params.setRows(limit); try { QueryResponse resp = solrServer.query(params); SolrDocumentList results = resp.getResults(); if (logger.isDebugEnabled()) { logger.debug("SOLR query time for " + results.size() + " results: " + resp.getElapsedTime() + "ms."); } for (int i = 0; i < limit && i < results.size(); i++) { SolrDocument doc = results.get(i); Map<String, Object> payload = doc.getFieldValueMap(); evtIds.add((Integer) payload.get("id")); } } catch (SolrServerException e) { logger.error("Error querying server for '" + sb.toString() + " url: " + ClientUtils.toQueryString(params, false), e); } } IntegerSQLCollectionHelper eventIds = new IntegerSQLCollectionHelper(evtIds); String q = "SELECT " + CONTACT_SELECT_FIELDS + ", now() as last_sync FROM Contact, ContactEntity WHERE " + "contactentity_contact_id=contact_id AND contact_archive != 1 AND contact_id IN (" + eventIds.asPlaceHolders() + ")"; ps = con.prepareStatement(q); eventIds.insertValues(ps, 1); rs = ps.executeQuery(); Map<Integer, Contact> entityContact = new HashMap<Integer, Contact>(); int i = 0; while (rs.next() && i < limit) { int entity = rs.getInt("contactentity_entity_id"); if (!entityContact.containsKey(entity)) { Contact ct = contactFromCursor(rs); entityContact.put(ct.getEntityId(), ct); ret.add(ct); i++; } } rs.close(); rs = null; if (!entityContact.isEmpty()) { loadPhones(con, entityContact); loadIMIdentifiers(con, entityContact); loadWebsites(con, entityContact); loadAddresses(at, con, entityContact); loadEmails(con, entityContact); loadBirthday(con, entityContact); loadAnniversary(con, entityContact); } } finally { obmHelper.cleanup(null, ps, rs); } return ret; }