List of usage examples for org.apache.solr.client.solrj SolrQuery setHighlightSimplePre
public SolrQuery setHighlightSimplePre(String f)
From source file:com.liferay.portal.search.solr.internal.SolrIndexSearcher.java
License:Open Source License
protected void addHighlights(SolrQuery solrQuery, QueryConfig queryConfig) { if (!queryConfig.isHighlightEnabled()) { return;// ww w .ja v a 2 s .c o m } solrQuery.setHighlight(true); solrQuery.setHighlightFragsize(queryConfig.getHighlightFragmentSize()); solrQuery.setHighlightSimplePost(HighlightUtil.HIGHLIGHT_TAG_CLOSE); solrQuery.setHighlightSimplePre(HighlightUtil.HIGHLIGHT_TAG_OPEN); solrQuery.setHighlightSnippets(queryConfig.getHighlightSnippetSize()); for (String highlightFieldName : queryConfig.getHighlightFieldNames()) { addHighlightedField(solrQuery, queryConfig, highlightFieldName); } solrQuery.setHighlightRequireFieldMatch(queryConfig.isHighlightRequireFieldMatch()); }
From source file:com.liferay.portal.search.solr.SolrIndexSearcher.java
License:Open Source License
protected void addHighlights(SolrQuery solrQuery, QueryConfig queryConfig) { if (!queryConfig.isHighlightEnabled()) { return;/*from w w w .ja v a 2s .c o m*/ } solrQuery.setHighlight(true); solrQuery.setHighlightFragsize(queryConfig.getHighlightFragmentSize()); solrQuery.setHighlightSimplePost(SearchUtil.HIGHLIGHT_TAG_CLOSE); solrQuery.setHighlightSimplePre(SearchUtil.HIGHLIGHT_TAG_OPEN); solrQuery.setHighlightSnippets(queryConfig.getHighlightSnippetSize()); for (String highlightFieldName : queryConfig.getHighlightFieldNames()) { addHighlightedField(solrQuery, queryConfig, highlightFieldName); } solrQuery.setHighlightRequireFieldMatch(queryConfig.isHighlightRequireFieldMatch()); }
From source file:com.thinkbiganalytics.search.SolrSearchService.java
License:Apache License
private QueryResponse executeSearch(String query, int size, int start) { final String COLLECTION_LIST = "kylo-data," + SearchIndex.DATASOURCES; //Solr admin to configure beforehand final String ALL_FIELDS = "*"; final String BOLD_HIGHLIGHT_START = "<font style='font-weight:bold'>"; final String BOLD_HIGHLIGHT_END = "</font>"; SolrQuery solrQuery = new SolrQuery(); solrQuery.set("q", query); solrQuery.setRows(size);//from ww w.ja va 2s.c o m solrQuery.setStart(start); solrQuery.setParam("collection", COLLECTION_LIST); solrQuery.setHighlight(true); solrQuery.set("hl.fl", ALL_FIELDS); solrQuery.setHighlightSimplePre(BOLD_HIGHLIGHT_START); solrQuery.setHighlightSimplePost(BOLD_HIGHLIGHT_END); solrQuery.setHighlightRequireFieldMatch(false); try { return client.query("kylo-data", solrQuery); } catch (SolrServerException | IOException e) { throw new RuntimeException("Error encountered during search."); } }
From source file:com.zb.app.external.lucene.solr.client.SolrClient.java
License:Open Source License
/** * solr//from ww w. ja v a 2 s . c om * * @param corename ????? * @param returnType Class * @param solrQuery {@link SolrQueryConvert} * @return */ @SuppressWarnings("unchecked") public <T> List<T> querys(String corename, final Class<T> returnType, final SolrQuery solrQuery) { // solrQuery.setParam("hl", "true"); // highlighting solrQuery.setParam("hl.fl", "lTile", "lMode", "lYesItem", "lNoItem", "lChildren", "lShop", "lExpenseItem", "lPreseItem", "rContent", "rCar"); solrQuery.setHighlightSimplePre("<font color=\"red\">"); solrQuery.setHighlightSimplePost("</font>"); final SolrDocumentList list = new SolrDocumentList(); final HttpSolrServer server = getOrCreateSolrServer(corename); exec(new Executor() { public Result exec() throws SolrServerException, IOException { QueryResponse query = null; if (solrQuery.toString().length() > MAX_URL_LENGTH) { query = server.query(solrQuery, SolrRequest.METHOD.POST); } else { query = server.query(solrQuery, SolrRequest.METHOD.GET); } SolrDocumentList documents = query.getResults(); Map<String, Map<String, List<String>>> map = query.getHighlighting(); for (SolrDocument document : documents) { document.setField("lTile", map.get(document.getFieldValue("id")).get("lTile")); list.add(document); } return Result.success(); } }); return (List<T>) toBeanList(list, returnType); }
From source file:cz.zcu.kiv.eegdatabase.logic.search.FulltextSearchService.java
License:Apache License
/** * Configures the query to be processed. * @param inputQuery The query string.//w ww. j a v a2 s .c o m * @param start Index of the first returned result. * @param count Number of results we wish to display. * @return Configured query. */ private SolrQuery configureQuery(String inputQuery, ResultCategory category, int start, int count) { SolrQuery query = new SolrQuery(); query.setQuery(inputQuery); if (category != null && !category.equals(ResultCategory.ALL)) { query.addFilterQuery(IndexField.CLASS.getValue() + ":\"" + category.getValue() + "\""); } query.setStart(start); query.setRows(count); query.setHighlightSimplePre(FullTextSearchUtils.HIGHLIGHTED_TEXT_BEGIN); query.setHighlightSimplePost(FullTextSearchUtils.HIGHLIGHTED_TEXT_END); return query; }
From source file:cz.zcu.kiv.eegdatabase.logic.search.FulltextSearchService.java
License:Apache License
/** * Gets values to autocomplete for the input string. * The autocomplete feature works for multivalued fields and is based on a highlighting trick. * See http://solr.pl/en/2013/02/25/autocomplete-on-multivalued-fields-using-highlighting/ * @param keywordStart//from www . ja v a 2 s. c om * @return Autocomplete values. * @throws SolrServerException */ public Set<String> getTextToAutocomplete(String keywordStart) throws SolrServerException { SolrQuery query = new SolrQuery(); query.setQuery(IndexField.AUTOCOMPLETE.getValue() + ":" + keywordStart); query.setFields(IndexField.AUTOCOMPLETE.getValue()); query.setHighlight(true); query.setParam("hl.fl", IndexField.AUTOCOMPLETE.getValue()); query.setHighlightSimplePre(""); query.setHighlightSimplePost(""); query.setRows(FullTextSearchUtils.AUTOCOMPLETE_ROWS); Map<String, Integer> map = new TreeMap<String, Integer>(); QueryResponse response = solrServer.query(query); Set<String> foundIds = response.getHighlighting().keySet(); for (String id : foundIds) { List<String> resultsPerDocument = response.getHighlighting().get(id) .get(IndexField.AUTOCOMPLETE.getValue()); if (resultsPerDocument != null) { for (String result : resultsPerDocument) { String resultValue; int resultFrequency; int delimiterPosition = result.lastIndexOf('#'); if (delimiterPosition == -1) { // autocomplete phrase was copied from title resultValue = result; resultFrequency = 0; } else { resultValue = result.substring(0, delimiterPosition); try { resultFrequency = Integer .valueOf(result.substring(delimiterPosition + 1, result.length())); } catch (NumberFormatException e) { resultFrequency = 0; } } map.put(resultValue.toLowerCase(), resultFrequency); } } if (map.size() == FullTextSearchUtils.AUTOCOMPLETE_ROWS) { break; } } map = sortByValue(map); return map.keySet(); }
From source file:fr.paris.lutece.plugins.search.solr.business.SolrSearchEngine.java
License:Open Source License
/** * Return the result with facets. Does NOT support authentification yet. * @param strQuery the query/*from w ww . ja v a 2s .c om*/ * @param facetQueries The selected facets * @param sortName The facet name to sort by * @param sortOrder "asc" or "desc" * @param nLimit Maximal number of results. * @return the result with facets */ public SolrFacetedResult getFacetedSearchResults(String strQuery, String[] facetQueries, String sortName, String sortOrder, int nLimit, int nCurrentPageIndex, int nItemsPerPage, Boolean bSpellCheck) { SolrFacetedResult facetedResult = new SolrFacetedResult(); SolrClient solrServer = SolrServerService.getInstance().getSolrServer(); List<SolrSearchResult> results = new ArrayList<SolrSearchResult>(); Hashtable<Field, List<String>> myValuesList = new Hashtable<Field, List<String>>(); if (solrServer != null) { SolrQuery query = new SolrQuery(strQuery); query.setHighlight(true); query.setHighlightSimplePre(SOLR_HIGHLIGHT_PRE); query.setHighlightSimplePost(SOLR_HIGHLIGHT_POST); query.setHighlightSnippets(SOLR_HIGHLIGHT_SNIPPETS); query.setHighlightFragsize(SOLR_HIGHLIGHT_FRAGSIZE); query.setFacet(true); query.setFacetLimit(SOLR_FACET_LIMIT); // query.setFacetMinCount( 1 ); for (Field field : SolrFieldManager.getFacetList().values()) { //Add facet Field if (field.getEnableFacet()) { if (field.getName().equalsIgnoreCase("date") || field.getName().toLowerCase().endsWith("_date")) { query.setParam("facet.date", field.getName()); query.setParam("facet.date.start", SOLR_FACET_DATE_START); query.setParam("facet.date.gap", SOLR_FACET_DATE_GAP); query.setParam("facet.date.end", SOLR_FACET_DATE_END); query.setParam("facet.date.mincount", "0"); } else { query.addFacetField(field.getSolrName()); query.setParam("f." + field.getSolrName() + ".facet.mincount", String.valueOf(field.getFacetMincount())); } myValuesList.put(field, new ArrayList<String>()); } } //Facet intersection List<String> treeParam = new ArrayList<String>(); for (FacetIntersection intersect : SolrFieldManager.getIntersectionlist()) { treeParam.add(intersect.getField1().getSolrName() + "," + intersect.getField2().getSolrName()); } //(String []) al.toArray (new String [0]); query.setParam("facet.tree", (String[]) treeParam.toArray(new String[0])); query.setParam("spellcheck", bSpellCheck); //sort order if ((sortName != null) && !"".equals(sortName)) { if (sortOrder.equals("asc")) { query.setSort(sortName, ORDER.asc); } else { query.setSort(sortName, ORDER.desc); } } else { for (Field field : SolrFieldManager.getSortList()) { if (field.getDefaultSort()) { query.setSort(field.getName(), ORDER.desc); } } } //Treat HttpRequest //FacetQuery if (facetQueries != null) { for (String strFacetQuery : facetQueries) { // if ( strFacetQuery.contains( DATE_COLON ) ) // { // query.addFilterQuery( strFacetQuery ); // } // else // { String myValues[] = strFacetQuery.split(":", 2); if (myValues != null && myValues.length == 2) { myValuesList = getFieldArrange(myValues, myValuesList); } //strFacetQueryWithColon = strFacetQuery.replaceFirst( SolrConstants.CONSTANT_COLON, COLON_QUOTE ); //strFacetQueryWithColon += SolrConstants.CONSTANT_QUOTE; // query.addFilterQuery( strFacetQuery ); // } } for (Field tmpFieldValue : myValuesList.keySet()) { List<String> strValues = myValuesList.get(tmpFieldValue); String strFacetString = ""; if (strValues.size() > 0) { strFacetString = extractQuery(strValues, tmpFieldValue.getOperator()); if (tmpFieldValue.getName().equalsIgnoreCase("date") || tmpFieldValue.getName().toLowerCase().endsWith("_date")) { strFacetString = strFacetString.replaceAll("\"", ""); } query.addFilterQuery(tmpFieldValue.getName() + ":" + strFacetString); } } } try { // count query query.setRows(0); QueryResponse response = solrServer.query(query); int nResults = (int) response.getResults().getNumFound(); facetedResult.setCount(nResults > nLimit ? nLimit : nResults); query.setStart((nCurrentPageIndex - 1) * nItemsPerPage); query.setRows(nItemsPerPage > nLimit ? nLimit : nItemsPerPage); query.setParam("defType", DEF_TYPE); String strWeightValue = generateQueryWeightValue(); query.setParam("qf", strWeightValue); response = solrServer.query(query); //HighLight Map<String, Map<String, List<String>>> highlightsMap = response.getHighlighting(); SolrHighlights highlights = null; if (highlightsMap != null) { highlights = new SolrHighlights(highlightsMap); } //resultList List<SolrItem> itemList = response.getBeans(SolrItem.class); results = SolrUtil.transformSolrItemsToSolrSearchResults(itemList, highlights); //set the spellcheckresult facetedResult.setSolrSpellCheckResponse(response.getSpellCheckResponse()); //Date facet if ((response.getFacetDates() != null) && !response.getFacetDates().isEmpty()) { facetedResult.setFacetDateList(response.getFacetDates()); } //FacetField facetedResult.setFacetFields(response.getFacetFields()); //Facet intersection (facet tree) NamedList<Object> resp = (NamedList<Object>) response.getResponse().get("facet_counts"); if (resp != null) { NamedList<NamedList<NamedList<Integer>>> trees = (NamedList<NamedList<NamedList<Integer>>>) resp .get("trees"); Map<String, ArrayList<FacetField>> treesResult = new HashMap<String, ArrayList<FacetField>>(); if (trees != null) { for (Entry<String, NamedList<NamedList<Integer>>> selectedFacet : trees) { //Selected Facet (ex : type,categorie ) //System.out.println(selectedFacet.getKey()); ArrayList<FacetField> facetFields = new ArrayList<FacetField>( selectedFacet.getValue().size()); for (Entry<String, NamedList<Integer>> facetField : selectedFacet.getValue()) { FacetField ff = new FacetField(facetField.getKey()); //System.out.println("\t" + facetField.getKey()); for (Entry<String, Integer> value : facetField.getValue()) { // Second Level ff.add(value.getKey(), value.getValue()); //System.out.println("\t\t" + value.getKey() + " : " + value.getValue()); } facetFields.add(ff); } treesResult.put(selectedFacet.getKey(), facetFields); } } facetedResult.setFacetIntersection(treesResult); } } catch (SolrServerException e) { AppLogService.error(e.getMessage(), e); } catch (IOException e) { AppLogService.error(e.getMessage(), e); } } else { facetedResult.setFacetFields(new ArrayList<FacetField>()); } facetedResult.setSolrSearchResults(results); return facetedResult; }
From source file:fr.paris.lutece.plugins.search.solr.business.SolrSearchEngine.java
License:Open Source License
public String getDocumentHighLighting(String strDocumentId, String terms) { String strDocumentIdPrefixed = SolrIndexerService.getWebAppName() + SolrConstants.CONSTANT_UNDERSCORE + strDocumentId;/*from w w w .ja v a 2 s .c om*/ String xmlContent = null; SolrClient solrServer = SolrServerService.getInstance().getSolrServer(); SolrQuery query = new SolrQuery(terms); query.setHighlight(true); query.setHighlightSimplePre(SOLR_HIGHLIGHT_PRE); query.setHighlightSimplePost(SOLR_HIGHLIGHT_POST); query.setHighlightFragsize(0); //return all the content, not fragments query.setParam("hl.fl", SolrItem.FIELD_XML_CONTENT); //return only the field xml_content HighLighting query.setFields(SearchItem.FIELD_UID); //return only the field uid query.setRows(1); query.addFilterQuery(SearchItem.FIELD_UID + ":" + strDocumentIdPrefixed); try { QueryResponse response = solrServer.query(query); if (response.getResults().size() == 1) { SolrHighlights highlights = new SolrHighlights(response.getHighlighting()); if (highlights.getHighlights(strDocumentIdPrefixed).getMap().size() > 0) { xmlContent = highlights.getHighlights(strDocumentIdPrefixed).getMap() .get(SolrItem.FIELD_XML_CONTENT).get(0); } } } catch (SolrServerException e) { AppLogService.error(e.getMessage(), e); } catch (IOException e) { AppLogService.error(e.getMessage(), e); } return xmlContent; }
From source file:net.yacy.peers.Protocol.java
License:Open Source License
protected static int solrQuery(final SearchEvent event, final SolrQuery solrQuery, final int offset, final int count, final Seed target, final int partitions, final Blacklist blacklist) { if (event.query.getQueryGoal().getQueryString(false) == null || event.query.getQueryGoal().getQueryString(false).length() == 0) { return -1; // we cannot query solr only with word hashes, there is no clear text string }/*from ww w . ja v a 2 s. c o m*/ event.addExpectedRemoteReferences(count); if (partitions > 0) solrQuery.set("partitions", partitions); solrQuery.setStart(offset); solrQuery.setRows(count); // set highlighting query attributes if (event.query.contentdom == Classification.ContentDomain.TEXT || event.query.contentdom == Classification.ContentDomain.ALL) { solrQuery.setHighlight(true); solrQuery.setHighlightFragsize(SearchEvent.SNIPPET_MAX_LENGTH); //solrQuery.setHighlightRequireFieldMatch(); solrQuery.setHighlightSimplePost("</b>"); solrQuery.setHighlightSimplePre("<b>"); solrQuery.setHighlightSnippets(5); for (CollectionSchema field : snippetFields) solrQuery.addHighlightField(field.getSolrFieldName()); } else { solrQuery.setHighlight(false); } boolean localsearch = target == null || target.equals(event.peers.mySeed()); Map<String, ReversibleScoreMap<String>> facets = new HashMap<String, ReversibleScoreMap<String>>( event.query.facetfields.size()); Map<String, LinkedHashSet<String>> snippets = new HashMap<String, LinkedHashSet<String>>(); // this will be a list of urlhash-snippet entries final QueryResponse[] rsp = new QueryResponse[] { null }; final SolrDocumentList[] docList = new SolrDocumentList[] { null }; String ip = target.getIP(); {// encapsulate expensive solr QueryResponse object if (localsearch && !Switchboard.getSwitchboard() .getConfigBool(SwitchboardConstants.DEBUG_SEARCH_REMOTE_SOLR_TESTLOCAL, false)) { // search the local index try { SolrConnector sc = event.getQuery().getSegment().fulltext().getDefaultConnector(); if (!sc.isClosed()) { rsp[0] = sc.getResponseByParams(solrQuery); docList[0] = rsp[0].getResults(); } } catch (final Throwable e) { Network.log.info("SEARCH failed (solr), localpeer (" + e.getMessage() + ")", e); return -1; } } else { try { final boolean myseed = target == event.peers.mySeed(); if (!myseed && !target.getFlagSolrAvailable()) { // skip if peer.dna has flag that last try resulted in error Network.log.info("SEARCH skip (solr), remote Solr interface not accessible, peer=" + target.getName()); return -1; } final String address = myseed ? "localhost:" + target.getPort() : target.getPublicAddress(ip); final int solrtimeout = Switchboard.getSwitchboard() .getConfigInt(SwitchboardConstants.FEDERATED_SERVICE_SOLR_INDEXING_TIMEOUT, 6000); Thread remoteRequest = new Thread() { @Override public void run() { this.setName("Protocol.solrQuery(" + solrQuery.getQuery() + " to " + target.hash + ")"); try { RemoteInstance instance = new RemoteInstance("http://" + address, null, "solr", solrtimeout); // this is a 'patch configuration' which considers 'solr' as default collection try { SolrConnector solrConnector = new RemoteSolrConnector(instance, myseed ? true : target.getVersion() >= 1.63, "solr"); if (!solrConnector.isClosed()) try { rsp[0] = solrConnector.getResponseByParams(solrQuery); docList[0] = rsp[0].getResults(); } catch (Throwable e) { } finally { solrConnector.close(); } } catch (Throwable ee) { } finally { instance.close(); } } catch (Throwable eee) { } } }; remoteRequest.start(); remoteRequest.join(solrtimeout); // just wait until timeout appears if (remoteRequest.isAlive()) { try { remoteRequest.interrupt(); } catch (Throwable e) { } Network.log.info("SEARCH failed (solr), remote Peer: " + target.getName() + "/" + target.getPublicAddress(ip) + " does not answer (time-out)"); target.setFlagSolrAvailable(false || myseed); return -1; // give up, leave remoteRequest abandoned. } // no need to close this here because that sends a commit to remote solr which is not wanted here } catch (final Throwable e) { Network.log.info("SEARCH failed (solr), remote Peer: " + target.getName() + "/" + target.getPublicAddress(ip) + " (" + e.getMessage() + ")"); target.setFlagSolrAvailable(false || localsearch); return -1; } } if (rsp[0] == null || docList[0] == null) { Network.log.info("SEARCH failed (solr), remote Peer: " + target.getName() + "/" + target.getPublicAddress(ip) + " returned null"); target.setFlagSolrAvailable(false || localsearch); return -1; } // evaluate facets for (String field : event.query.facetfields) { FacetField facet = rsp[0].getFacetField(field); ReversibleScoreMap<String> result = new ClusteredScoreMap<String>(UTF8.insensitiveUTF8Comparator); List<Count> values = facet == null ? null : facet.getValues(); if (values == null) continue; for (Count ff : values) { int c = (int) ff.getCount(); if (c == 0) continue; if (ff.getName().length() == 0) continue; // facet entry without text is not useful result.set(ff.getName(), c); } if (result.size() > 0) facets.put(field, result); } // evaluate snippets Map<String, Map<String, List<String>>> rawsnippets = rsp[0].getHighlighting(); // a map from the urlhash to a map with key=field and value = list of snippets if (rawsnippets != null) { nextsnippet: for (Map.Entry<String, Map<String, List<String>>> re : rawsnippets.entrySet()) { Map<String, List<String>> rs = re.getValue(); for (CollectionSchema field : snippetFields) { if (rs.containsKey(field.getSolrFieldName())) { List<String> s = rs.get(field.getSolrFieldName()); if (s.size() > 0) { LinkedHashSet<String> ls = new LinkedHashSet<String>(); ls.addAll(s); snippets.put(re.getKey(), ls); continue nextsnippet; } } } // no snippet found :( --we don't assign a value here by default; that can be done as an evaluation outside this method } } rsp[0] = null; } // evaluate result if (docList == null || docList[0].size() == 0) { Network.log.info("SEARCH (solr), returned 0 out of 0 documents from " + (target == null ? "shard" : ("peer " + target.hash + ":" + target.getName())) + " query = " + solrQuery.toString()); return 0; } List<URIMetadataNode> container = new ArrayList<URIMetadataNode>(); Network.log.info("SEARCH (solr), returned " + docList[0].size() + " out of " + docList[0].getNumFound() + " documents and " + facets.size() + " facets " + facets.keySet().toString() + " from " + (target == null ? "shard" : ("peer " + target.hash + ":" + target.getName()))); int term = count; Collection<SolrInputDocument> docs; if (event.addResultsToLocalIndex) { // only needed to store remote results docs = new ArrayList<SolrInputDocument>(docList[0].size()); } else docs = null; for (final SolrDocument doc : docList[0]) { if (term-- <= 0) { break; // do not process more that requested (in case that evil peers fill us up with rubbish) } // get one single search result if (doc == null) { continue; } URIMetadataNode urlEntry = new URIMetadataNode(doc); if (blacklist.isListed(BlacklistType.SEARCH, urlEntry.url())) { if (Network.log.isInfo()) { if (localsearch) { Network.log.info("local search (solr): filtered blacklisted url " + urlEntry.url()); } else { Network.log.info("remote search (solr): filtered blacklisted url " + urlEntry.url() + " from " + (target == null ? "shard" : ("peer " + target.hash + ":" + target.getName()))); } } continue; // block with blacklist } final String urlRejectReason = Switchboard.getSwitchboard().crawlStacker .urlInAcceptedDomain(urlEntry.url()); if (urlRejectReason != null) { if (Network.log.isInfo()) { if (localsearch) { Network.log.info("local search (solr): rejected url '" + urlEntry.url() + "' (" + urlRejectReason + ")"); } else { Network.log.info("remote search (solr): rejected url '" + urlEntry.url() + "' (" + urlRejectReason + ") from peer " + target.getName()); } } continue; // reject url outside of our domain } // passed all checks, store url if (!localsearch) { // put the remote documents to the local index. We must convert the solr document to a solr input document: if (event.addResultsToLocalIndex) { final SolrInputDocument sid = event.query.getSegment().fulltext().getDefaultConfiguration() .toSolrInputDocument(doc); // the input document stays untouched because it contains top-level cloned objects docs.add(sid); // will be stored to index, and is a full solr document, can be added to firstseen event.query.getSegment().setFirstSeenTime(urlEntry.hash(), Math.min(urlEntry.moddate().getTime(), System.currentTimeMillis())); } // after this conversion we can remove the largest and not used field text_t and synonyms_sxt from the document // because that goes into a search cache and would take a lot of memory in the search cache //doc.removeFields(CollectionSchema.text_t.getSolrFieldName()); doc.removeFields(CollectionSchema.synonyms_sxt.getSolrFieldName()); ResultURLs.stack(ASCII.String(urlEntry.url().hash()), urlEntry.url().getHost(), event.peers.mySeed().hash.getBytes(), UTF8.getBytes(target.hash), EventOrigin.QUERIES); } // add the url entry to the word indexes container.add(urlEntry); } final int dls = docList[0].size(); final int numFound = (int) docList[0].getNumFound(); docList[0].clear(); docList[0] = null; if (localsearch) { event.addNodes(container, facets, snippets, true, "localpeer", numFound); event.addFinalize(); event.addExpectedRemoteReferences(-count); Network.log.info( "local search (solr): localpeer sent " + container.size() + "/" + numFound + " references"); } else { if (event.addResultsToLocalIndex) { for (SolrInputDocument doc : docs) { event.query.getSegment().putDocument(doc); } docs.clear(); docs = null; } event.addNodes(container, facets, snippets, false, target.getName() + "/" + target.hash, numFound); event.addFinalize(); event.addExpectedRemoteReferences(-count); Network.log.info("remote search (solr): peer " + target.getName() + " sent " + (container.size() == 0 ? 0 : container.size()) + "/" + numFound + " references"); } return dls; }
From source file:org.ala.dao.FulltextSearchDaoImplSolr.java
License:Open Source License
/** * Helper method to create SolrQuery object and add facet settings * * @return solrQuery the SolrQuery// w w w . j av a 2s . co m */ protected SolrQuery initSolrQuery(String[] facets) { SolrQuery solrQuery = new SolrQuery(); solrQuery.setQueryType("standard"); if (facets == null) { //use the default set solrQuery.setFacet(true); solrQuery.addFacetField("idxtype"); solrQuery.addFacetField("australian_s"); solrQuery.addFacetField("speciesGroup"); solrQuery.addFacetField("speciesSubgroup"); //solrQuery.addFacetField("kingdom"); solrQuery.addFacetField("rank"); //solrQuery.addFacetField("rankId"); //solrQuery.addFacetField("pestStatus"); // solrQuery.addFacetField("conservationStatus"); solrQuery.addFacetField("conservationStatusAUS"); solrQuery.addFacetField("conservationStatusACT"); solrQuery.addFacetField("conservationStatusNSW"); solrQuery.addFacetField("conservationStatusNT"); solrQuery.addFacetField("conservationStatusQLD"); solrQuery.addFacetField("conservationStatusSA"); solrQuery.addFacetField("conservationStatusTAS"); solrQuery.addFacetField("conservationStatusVIC"); solrQuery.addFacetField("conservationStatusWA"); solrQuery.addFacetField("category_m_s"); solrQuery.addFacetField("category_NSW_m_s"); solrQuery.addFacetField("category_ACT_m_s"); solrQuery.addFacetField("category_QLD_m_s"); solrQuery.addFacetField("category_SA_m_s"); solrQuery.addFacetField("category_NT_m_s"); solrQuery.addFacetField("category_TAS_m_s"); solrQuery.addFacetField("category_WA_m_s"); solrQuery.addFacetField("category_VIC_m_s"); } else { solrQuery.addFacetField(facets); } solrQuery.setFacetMinCount(1); solrQuery.setRows(10); solrQuery.setStart(0); //add highlights solrQuery.setHighlight(true); solrQuery.setHighlightFragsize(80); solrQuery.setHighlightSnippets(2); solrQuery.setHighlightSimplePre("<strong>"); solrQuery.setHighlightSimplePost("</strong>"); solrQuery.add("hl.usePhraseHighlighter", "true"); solrQuery.addHighlightField("commonName"); solrQuery.addHighlightField("scientificName"); solrQuery.addHighlightField("pestStatus"); solrQuery.addHighlightField("conservationStatus"); solrQuery.addHighlightField("simpleText"); solrQuery.addHighlightField("content"); return solrQuery; }