List of usage examples for org.apache.solr.client.solrj SolrQuery setSort
public SolrQuery setSort(String field, ORDER order)
From source file:com.comm.sr.common.solr.SolrQueryGenerator.java
@Override public SolrQuery generateFinalQuery(SolrCommonQuery query_) { SolrQuery solrQuery = new SolrQuery(); solrQuery.setParam("collection", query_.getCollectionName()); SubQuery query = query_.getSubQuery(); if (query == null) { return solrQuery; }//from w ww . j av a2 s.c o m StringBuffer solrQueryBuffer = new StringBuffer(); makeFinalSolrQuery(query, solrQueryBuffer); int pageNum = query_.getPageNum(); if (pageNum < 1) { // default first page pageNum = 1; } else { pageNum = query_.getPageNum(); } List<SortItem> sortItems = query_.getSortItems(); if (sortItems == null) { sortItems = Lists.newArrayList(); } for (String functionQueryString : query_.getFunctionQuerysList()) { solrQueryBuffer.append("_query_:\"{!func}" + functionQueryString + "\"" + " AND "); } if (solrQueryBuffer.toString().contains("AND")) { int and = solrQueryBuffer.lastIndexOf("AND"); solrQueryBuffer.replace(and, and + 3, ""); } if (solrQueryBuffer.toString().trim().length() == 0) { solrQueryBuffer.append("*:*"); } for (SortItem sortItem : sortItems) { String fieldName = sortItem.getFieldName(); String order = sortItem.getSort(); if (order == null) { LOGGER.info("ingore sort fieldName:" + fieldName + ", please configure it."); continue; } if (order.trim().equals("asc")) { solrQuery.setSort(fieldName, SolrQuery.ORDER.asc); } if (order.trim().equals("desc")) { solrQuery.addSort(fieldName, SolrQuery.ORDER.desc); } } for (String fl : query_.getFls()) { solrQuery.addField(fl); } int pageSize = query_.getPageSize(); solrQuery.add("start", String.valueOf((pageNum - 1) * pageSize)); solrQuery.add("rows", String.valueOf(pageSize)); // if have distance query // fq=_query_:%22{!geofilt}%22&sfield=location&pt=45.15,-93.85&d=50000&sort=geodist()%20asc&fl=score,geodist(),location String location = query_.getLocationPoint(); Double distance = query_.getDistance(); if (location != null && distance != null) { solrQuery.add("d", distance.toString()); solrQuery.add("pt", location); solrQuery.add("sfield", "location"); solrQuery.add("fq", "_query_:{!geofilt}"); solrQuery.addSort("geodist()", SolrQuery.ORDER.asc); } LOGGER.info(solrQueryBuffer.toString()); solrQuery.setQuery(solrQueryBuffer.toString()); return solrQuery; }
From source file:com.comm.sr.service.solr.SolrQueryGenerator.java
@Override public SolrQuery generateFinalQuery(CommonQuery query) { SolrQuery solrQuery = new SolrQuery(); StringBuilder queryStr = new StringBuilder(); StringBuilder filterQueryStr = new StringBuilder(); int pageNum = query.getPageNum(); if (pageNum < 1) { // default first page pageNum = 1;/*from w w w. j av a2 s.c o m*/ } else { pageNum = query.getPageNum(); } List<QueryItem> queryItems = query.getQueryItems(); if (queryItems == null) { queryItems = Lists.newArrayList(); } List<SortItem> sortItems = query.getSortItems(); if (sortItems == null) { sortItems = Lists.newArrayList(); } for (QueryItem queryItem : queryItems) { if (queryItem.isIsFilterType()) { String temp = generateQueryStrFromQueryItem(queryItem); if (temp != null) { filterQueryStr.append(temp + " AND "); } } if (!queryItem.isIsFilterType()) { String temp = generateQueryStrFromQueryItem(queryItem); if (temp != null) { queryStr.append(temp + " AND "); } } } for (String functionQueryString : query.getFunctionQuerysList()) { queryStr.append("_query_:\"{!func}" + functionQueryString + "\"" + " AND "); } // check if final queryStr is empty if (queryStr.toString().trim().length() == 0) { queryStr.append("*:*"); } // delete last AND if (queryStr.toString().contains("AND")) { int and = queryStr.lastIndexOf("AND"); queryStr.replace(and, and + 3, ""); } if (filterQueryStr.toString().contains("AND")) { int and = filterQueryStr.lastIndexOf("AND"); filterQueryStr.replace(and, and + 3, ""); } for (SortItem sortItem : sortItems) { String fieldName = sortItem.getFieldName(); String order = sortItem.getSort(); if (order == null) { LOGGER.info("ingore sort fieldName:" + fieldName + ", please configure it."); continue; } if (order.trim().equals("asc")) { solrQuery.setSort(fieldName, SolrQuery.ORDER.asc); } if (order.trim().equals("desc")) { solrQuery.addSort(fieldName, SolrQuery.ORDER.desc); } } solrQuery.setQuery(queryStr.toString()); if (filterQueryStr.toString().length() != 0) { solrQuery.setFilterQueries(filterQueryStr.toString()); } LOGGER.debug("final queryStr is:" + queryStr.toString() + ""); LOGGER.debug("filter queryStr is:" + filterQueryStr.toString() + ""); // //only response userID,score // solrQuery.setFields("userID","score"); for (String fl : query.getFls()) { solrQuery.addField(fl); } int pageSize = query.getPageSize(); solrQuery.add("start", String.valueOf((pageNum - 1) * pageSize)); solrQuery.add("rows", String.valueOf(pageSize)); // if have distance query // fq=_query_:%22{!geofilt}%22&sfield=location&pt=45.15,-93.85&d=50000&sort=geodist()%20asc&fl=score,geodist(),location String location = query.getLocationPoint(); Double distance = query.getDistance(); if (location != null && distance != null) { solrQuery.add("d", distance.toString()); solrQuery.add("pt", location); solrQuery.add("sfield", "location"); solrQuery.add("fq", "_query_:{!geofilt}"); solrQuery.addSort("geodist()", SolrQuery.ORDER.asc); } return solrQuery; }
From source file:com.doculibre.constellio.services.SearchServicesImpl.java
License:Open Source License
@Override public QueryResponse search(SimpleSearch simpleSearch, int start, int rows, SearchParams searchParams, ConstellioUser user) {//from www . ja v a 2 s .com QueryResponse queryResponse; String collectionName = simpleSearch.getCollectionName(); if (collectionName != null) { RecordCollectionServices collectionServices = ConstellioSpringUtils.getRecordCollectionServices(); RecordServices recordServices = ConstellioSpringUtils.getRecordServices(); RecordCollection collection = collectionServices.get(collectionName); SolrServices solrServices = ConstellioSpringUtils.getSolrServices(); Boolean usesDisMax = solrServices.usesDisMax(collection); SolrQuery query; if (!collection.isOpenSearch()) { query = toSolrQuery(simpleSearch, usesDisMax, true, true); } else { query = toSolrQuery(simpleSearch, usesDisMax, false, true); } // displayQuery(query); String luceneQuery = simpleSearch.getLuceneQuery(); query.setParam(ConstellioSolrQueryParams.LUCENE_QUERY, luceneQuery); query.setParam(ConstellioSolrQueryParams.SIMPLE_SEARCH, simpleSearch.toSimpleParams().toString()); query.setParam(ConstellioSolrQueryParams.COLLECTION_NAME, collectionName); if (user != null) { query.setParam(ConstellioSolrQueryParams.USER_ID, "" + user.getId()); } String queryString = query.getQuery(); if (StringUtils.isEmpty(queryString)) { queryString = SimpleSearch.SEARCH_ALL; } List<Record> pendingExclusions = recordServices.getPendingExclusions(collection); while (!pendingExclusions.isEmpty()) { IndexingManager indexingManager = IndexingManager.get(collection); if (indexingManager.isActive()) { try { Thread.sleep(100); } catch (InterruptedException e) { throw new RuntimeException(e); } pendingExclusions = recordServices.getPendingExclusions(collection); } else { return null; } } // SolrQuery query = new SolrQuery(); query.set("collectionName", simpleSearch.getCollectionName()); // query.setQuery(luceneQuery); query.set("shards.qt", "/elevate"); query.setRequestHandler("/elevate"); // nb rsultats par page query.setRows(rows); // page de dbut query.setStart(start); query.setHighlight(searchParams.isHighlightingEnabled()); if (searchParams.isHighlightingEnabled()) { query.setHighlightFragsize(searchParams.getFragsize()); query.setHighlightSnippets(searchParams.getSnippets()); } if (simpleSearch.getSortField() != null) { ORDER order = SimpleSearch.SORT_DESCENDING.equals(simpleSearch.getSortOrder()) ? ORDER.desc : ORDER.asc; IndexFieldServices indexFieldServices = ConstellioSpringUtils.getIndexFieldServices(); IndexField indexField = indexFieldServices.get(simpleSearch.getSortField(), collection); if (indexField != null) { IndexField sortIndexField = indexFieldServices.getSortFieldOf(indexField); if (sortIndexField != null) { query.setSort(sortIndexField.getName(), order); } } } if (collection.isOpenSearch()) { query.setParam("openSearchURL", collection.getOpenSearchURL()); Locale locale = simpleSearch.getSingleSearchLocale(); if (locale != null) { query.setParam("lang", locale.getLanguage()); } } if (searchParams.getHighlightedFields() == null) { IndexField defaultSearchField = collection.getDefaultSearchIndexField(); query.addHighlightField(defaultSearchField.getName()); for (CopyField copyFieldDest : defaultSearchField.getCopyFieldsDest()) { IndexField copyIndexFieldSource = copyFieldDest.getIndexFieldSource(); if (copyIndexFieldSource != null && !copyIndexFieldSource.isTitleField() && copyIndexFieldSource.isHighlighted()) { query.addHighlightField(copyIndexFieldSource.getName()); } } IndexField titleField = collection.getTitleIndexField(); if (titleField != null && titleField.isHighlighted()) { query.addHighlightField(titleField.getName()); } } else { for (String highlightedField : searchParams.getHighlightedFields()) { IndexField field = collection.getIndexField(highlightedField); if (field != null) { query.addHighlightField(highlightedField); } } } SolrServer server = SolrCoreContext.getSolrServer(collectionName); if (server != null) { try { // displayQuery(query); queryResponse = server.query(query); } catch (SolrServerException e) { queryResponse = null; } } else { queryResponse = null; } // if (queryResponse != null && !collection.isOpenSearch()) { // StatsCompiler statCompiler = StatsCompiler.getInstance(); // try { // statCompiler.saveStats(collectionName, SolrLogContext.getStatsSolrServer(), // SolrLogContext.getStatsCompileSolrServer(), queryResponse, luceneQuery); // } catch (SolrServerException e) { // throw new RuntimeException(e); // } catch (IOException e) { // throw new RuntimeException(e); // } // } } else { queryResponse = null; } // improveQueryResponse(collectionName, queryResponse); // System.out.println("Response size" + queryResponse.getResults().getNumFound()); return queryResponse; }
From source file:com.doculibre.constellio.services.StatusServicesImpl.java
License:Open Source License
@Override public List<Record> listLastIndexedRecords(RecordCollection collection, int maxSize) { List<Record> lastIndexedRecords; RecordServices recordServices = ConstellioSpringUtils.getRecordServices(); String luceneQuery = SimpleSearch.SEARCH_ALL; SolrQuery solrQuery = new SolrQuery(luceneQuery); solrQuery.setRequestHandler("standard"); solrQuery.setRows(maxSize);/* ww w .j ava 2 s . c o m*/ solrQuery.setSort(IndexField.LAST_INDEXED_FIELD, ORDER.desc); String collectionName = collection.getName(); solrQuery.setParam(ConstellioSolrQueryParams.LUCENE_QUERY, luceneQuery); solrQuery.setParam(ConstellioSolrQueryParams.COLLECTION_NAME, collectionName); SolrServer server = SolrCoreContext.getSolrServer(collectionName); if (server != null && collection.getIndexField(IndexField.LAST_INDEXED_FIELD) != null) { try { QueryResponse queryResponse = server.query(solrQuery); SolrDocumentList results = queryResponse.getResults(); List<Number> recordIds = new ArrayList<Number>(); for (SolrDocument result : results) { Long recordId = new Long(result.getFieldValue(IndexField.RECORD_ID_FIELD).toString()); recordIds.add(recordId); } if (!recordIds.isEmpty()) { lastIndexedRecords = recordServices.list(recordIds, collection); } else { lastIndexedRecords = new ArrayList<Record>(); } } catch (SolrServerException e) { throw new RuntimeException(e); } } else if (!collection.isSynchronizationRequired()) { String msg = "No SolrServer available for collection id " + collection.getId(); LOGGER.log(Level.SEVERE, msg); lastIndexedRecords = new ArrayList<Record>(); } else if (collection.getIndexField(IndexField.LAST_INDEXED_FIELD) == null) { String msg = "No " + IndexField.LAST_INDEXED_FIELD + " index field for collection id " + collection.getId(); LOGGER.log(Level.SEVERE, msg); lastIndexedRecords = new ArrayList<Record>(); } else { lastIndexedRecords = new ArrayList<Record>(); } return lastIndexedRecords; }
From source file:com.doculibre.constellio.stats.StatsSearcher.java
License:Open Source License
public QueryResponse getMostPopularQueries(String collectionName, SolrServer server, Date startDate, Date endDate, int start, int row) throws SolrServerException { SolrQuery solrQuery = new SolrQuery(); solrQuery.setStart(start);//ww w. jav a 2 s. c o m solrQuery.setRows(row); solrQuery.setSort("freq", SolrQuery.ORDER.desc); StringBuffer querySB = new StringBuffer("collection:" + collectionName + " recherche:recherche"); // querySB.append(" date:["); // querySB.append(StatsCompiler.format(startDate)); // querySB.append(" TO "); // querySB.append(StatsCompiler.format(endDate)); // querySB.append("]"); solrQuery.setQuery(querySB.toString()); return server.query(solrQuery); }
From source file:com.doculibre.constellio.stats.StatsSearcher.java
License:Open Source License
public QueryResponse getMostPopularQueriesZeroRes(String collectionName, SolrServer server, Date startDate, Date endDate, int start, int row) throws SolrServerException { SolrQuery solrQuery = new SolrQuery(); solrQuery.setStart(start);//from w w w.j a v a2s. co m solrQuery.setRows(row); solrQuery.setSort("freq", SolrQuery.ORDER.desc); StringBuffer querySB = new StringBuffer("collection:" + collectionName + " zero:true"); // querySB.append(" date:["); // querySB.append(StatsCompiler.format(startDate)); // querySB.append(" TO "); // querySB.append(StatsCompiler.format(endDate)); // querySB.append("]"); solrQuery.setQuery(querySB.toString()); return server.query(solrQuery); }
From source file:com.doculibre.constellio.stats.StatsSearcher.java
License:Open Source License
public QueryResponse getMostPopularQueriesWithRes(String collectionName, SolrServer server, Date startDate, Date endDate, int start, int row) throws SolrServerException { SolrQuery solrQuery = new SolrQuery(); solrQuery.setStart(start);/* w w w .j a va 2s. c om*/ solrQuery.setRows(row); solrQuery.setSort("freq", SolrQuery.ORDER.desc); StringBuffer querySB = new StringBuffer("collection:" + collectionName + " zero:false"); // querySB.append(" date:["); // querySB.append(StatsCompiler.format(startDate)); // querySB.append(" TO "); // querySB.append(StatsCompiler.format(endDate)); // querySB.append("]"); solrQuery.setQuery(querySB.toString()); return server.query(solrQuery); }
From source file:com.doculibre.constellio.stats.StatsSearcher.java
License:Open Source License
public QueryResponse getMostPopularQueriesWithClick(String collectionName, SolrServer server, Date startDate, Date endDate, int start, int row) throws SolrServerException { SolrQuery solrQuery = new SolrQuery(); solrQuery.setStart(start);//from w w w . ja v a2s . c o m solrQuery.setRows(row); solrQuery.setSort("freq", SolrQuery.ORDER.desc); StringBuffer querySB = new StringBuffer("collection:" + collectionName + " clickstr:notzero"); // querySB.append(" date:["); // querySB.append(StatsCompiler.format(startDate)); // querySB.append(" TO "); // querySB.append(StatsCompiler.format(endDate)); // querySB.append("]"); solrQuery.setQuery(querySB.toString()); return server.query(solrQuery); }
From source file:com.doculibre.constellio.stats.StatsSearcher.java
License:Open Source License
public QueryResponse getMostPopularQueriesWithoutClick(String collectionName, SolrServer server, Date startDate, Date endDate, int start, int row) throws SolrServerException { SolrQuery solrQuery = new SolrQuery(); solrQuery.setStart(start);//from w w w.j a va 2s .com solrQuery.setRows(row); solrQuery.setSort("freq", SolrQuery.ORDER.desc); StringBuffer querySB = new StringBuffer("collection:" + collectionName + " clickstr:zero"); // querySB.append(" date:["); // querySB.append(StatsCompiler.format(startDate)); // querySB.append(" TO "); // querySB.append(StatsCompiler.format(endDate)); // querySB.append("]"); solrQuery.setQuery(querySB.toString()); return server.query(solrQuery); }
From source file:com.doculibre.constellio.stats.StatsSearcher.java
License:Open Source License
public QueryResponse getQueryLog(String collectionName, SolrServer server, Date startDate, Date endDate, int start, int row) throws SolrServerException { SolrQuery solrQuery = new SolrQuery(); solrQuery.setStart(start);/*from w w w . j a va 2 s. c om*/ solrQuery.setRows(row); solrQuery.setSort("date", SolrQuery.ORDER.desc); StringBuffer querySB = new StringBuffer("collection:" + collectionName + " recherche:recherche"); querySB.append(" date:["); querySB.append(StatsCompiler.format(startDate)); querySB.append(" TO "); querySB.append(StatsCompiler.format(endDate)); querySB.append("]"); solrQuery.setQuery(querySB.toString()); return server.query(solrQuery); }