public String createCombinedTerm(String[] termArray) { String term1Combined = ""; for (String aTermArray : termArray) { if (filterGrayList.containsKey(aTermArray.toLowerCase())) { String filterTerms = filterGrayList.get(aTermArray.toLowerCase()); String[] splitFilterTerms = filterTerms.split(","); term1Combined = term1Combined + "(+\"" + aTermArray + "\" -("; for (String splitFilterTerm : splitFilterTerms) { term1Combined = term1Combined + "\"" + splitFilterTerm + "\" "; } term1Combined = term1Combined + ")) "; } else if (keepGrayList.containsKey(aTermArray.toLowerCase())) { String keepTerms = keepGrayList.get(aTermArray.toLowerCase()); String[] splitKeepTerms = keepTerms.split(","); term1Combined = term1Combined + "(+\"" + aTermArray + "\" +("; for (String splitKeepTerm : splitKeepTerms) { term1Combined = term1Combined + "\"" + splitKeepTerm + "\" "; } term1Combined = term1Combined + ")) "; } else { term1Combined = term1Combined + "\"" + aTermArray + "\" "; } } return term1Combined; }
@Override public void bulkIndex(List<IndexQuery> queries) { BulkRequestBuilder bulkRequest = client.prepareBulk(); for (IndexQuery query : queries) { bulkRequest.add(prepareIndex(query)); } BulkResponse bulkResponse = bulkRequest.execute().actionGet(); if (bulkResponse.hasFailures()) { Map<String, String> failedDocuments = new HashMap<String, String>(); for (BulkItemResponse item : bulkResponse.getItems()) { if (item.isFailed()) failedDocuments.put(item.getId(), item.getFailureMessage()); } throw new ElasticsearchException( "Bulk indexing has failures. Use ElasticsearchException.getFailedDocuments() for detailed messages [" + failedDocuments + "]", failedDocuments); } }
private static long getTermCount( SolrServer server, Map<String, Integer> singleCountMap, SearchTermAndList searchTermAndList, Map<String, String> filterGrayList, Map<String, String> keepGrayList) { List<String[]> searchTerms = searchTermAndList.asListArray(); Integer searchTermCountObject = searchTerms.size() != 1 ? null : singleCountMap.get(join(searchTerms.get(0), ",")); long searchTermCount = 0; if (searchTermCountObject == null) { // didn't find it in map, so need to go get count SolrQuery query = new SolrQuery(); query.setQuery("+text:(*:*)"); query.addFilterQuery("+pub_date_year:[1993 TO 2013]"); query.setParam("fl", "pmid"); for (int i = 0; i < searchTerms.size(); i++) { String term1 = ""; for (String aTermArray : searchTerms.get(i)) { if (filterGrayList.containsKey(aTermArray.toLowerCase())) { String filterTerms = filterGrayList.get(aTermArray.toLowerCase()); String[] splitFilterTerms = filterTerms.split(","); term1 = term1 + "(+\"" + aTermArray + "\" -("; for (String splitFilterTerm : splitFilterTerms) { term1 = term1 + "\"" + splitFilterTerm + "\" "; } term1 = term1 + ")) "; } else if (keepGrayList.containsKey(aTermArray.toLowerCase())) { String keepTerms = keepGrayList.get(aTermArray.toLowerCase()); String[] splitKeepTerms = keepTerms.split(","); term1 = term1 + "(+\"" + aTermArray + "\" +("; for (String splitKeepTerm : splitKeepTerms) { term1 = term1 + "\"" + splitKeepTerm + "\" "; } term1 = term1 + ")) "; } else { term1 = term1 + "\"" + aTermArray + "\" "; } } query.addFilterQuery("+text:(" + term1 + ")"); } try { QueryResponse rsp = server.query(query); searchTermCount = rsp.getResults().getNumFound(); singleCountMap.put( join(searchTerms.get(0), ","), Integer.parseInt(Long.toString(searchTermCount))); } catch (SolrServerException e) { // exit out if there is an error log.warning(e.getMessage()); System.exit(1); } } else { searchTermCount = searchTermCountObject; } return searchTermCount; }