List of usage examples for org.apache.solr.client.solrj.request UpdateRequest clear
public void clear()
From source file:com.doculibre.constellio.stats.StatsCompiler.java
License:Open Source License
public synchronized void saveStats(SimpleSearch simpleSearch, SolrServer indexJournal, SolrServer indexCompile, QueryResponse res) throws SolrServerException, IOException { String collectionName = simpleSearch.getCollectionName(); String luceneQuery = simpleSearch.getLuceneQuery(); GregorianCalendar calendar = new GregorianCalendar(); Date time = new Date(); calendar.setTime(time);/* w ww . j ava2 s . com*/ String query = luceneQuery; String escapedQuery = escape(query); long nbRes = res.getResults().getNumFound(); long qTime = res.getQTime(); String desplayDate = time.toString(); String searchDate = format(time); String queryWithParams = simpleSearch.toSimpleParams().toString(); SolrInputDocument doc = new SolrInputDocument(); doc.addField("id", desplayDate + query); doc.addField("query", query); doc.addField("queryWithParams", queryWithParams); doc.addField("nbres", "" + nbRes); doc.addField("qtime", "" + qTime); doc.addField("dateaffiche", desplayDate); doc.addField("date", searchDate); doc.addField("recherche", "recherche"); doc.addField("collection", collectionName); UpdateRequest up = new UpdateRequest(); up.setAction(ACTION.COMMIT, true, true); up.add(doc); up.process(indexJournal); String compileId = "collection_" + collectionName + " id_" + escapedQuery; SolrQuery solrQuery = new SolrQuery(); // Requte Lucene solrQuery.setQuery("id:\"" + compileId + "\""); // nb rsultats par page solrQuery.setRows(15); // page de dbut solrQuery.setStart(0); QueryResponse qr = indexCompile.query(solrQuery); if (qr.getResults().getNumFound() > 0) { SolrDocument sd = qr.getResults().get(0); long freq = (Long) sd.getFieldValue("freq"); long click = (Long) sd.getFieldValue("click"); // indexCompile.deleteById(query); SolrInputDocument docCompile = new SolrInputDocument(); docCompile.addField("id", compileId); docCompile.addField("query", query); if (!((String) sd.getFieldValue("nbres")).equals("0")) { ConstellioSpringUtils.getAutocompleteServices().onQueryAdd(docCompile, query); } docCompile.addField("freq", freq + 1); docCompile.addField("nbres", "" + nbRes); docCompile.addField("recherche", "recherche"); docCompile.addField("collection", collectionName); if (nbRes == 0) { docCompile.addField("zero", "true"); } else { docCompile.addField("zero", "false"); } docCompile.addField("click", click); if (click == 0) { docCompile.addField("clickstr", "zero"); } else { docCompile.addField("clickstr", "notzero"); } up.clear(); up.setAction(ACTION.COMMIT, true, true); up.add(docCompile); up.process(indexCompile); } else { SolrInputDocument docCompile = new SolrInputDocument(); docCompile.addField("id", compileId); docCompile.addField("query", query); if (nbRes != 0) { ConstellioSpringUtils.getAutocompleteServices().onQueryAdd(docCompile, query); } docCompile.addField("freq", 1); docCompile.addField("recherche", "recherche"); docCompile.addField("collection", collectionName); docCompile.addField("nbres", "" + nbRes); if (nbRes == 0) { docCompile.addField("zero", "true"); } else { docCompile.addField("zero", "false"); } docCompile.addField("click", 0); docCompile.addField("clickstr", "zero"); up.clear(); up.setAction(ACTION.COMMIT, true, true); up.add(docCompile); up.process(indexCompile); } }
From source file:org.teiid.translator.solr.SolrUpdateExecution.java
License:Open Source License
private void performInsert(Insert insert) throws TranslatorException { // build insert List<ColumnReference> columns = insert.getColumns(); if (insert.getParameterValues() == null) { final UpdateRequest request = new UpdateRequest(); SolrInputDocument doc = new SolrInputDocument(); List<Expression> values = ((ExpressionValueSource) insert.getValueSource()).getValues(); for (int i = 0; i < columns.size(); i++) { String columnName = SolrSQLHierarchyVistor.getColumnName(columns.get(i)); Object value = values.get(i); if (value instanceof Literal) { doc.addField(columnName, ((Literal) value).getValue()); } else { throw new TranslatorException(SolrPlugin.Event.TEIID20002, SolrPlugin.Util.gs(SolrPlugin.Event.TEIID20002)); }//from w ww .ja va2 s. c om } this.updateCount++; request.add(doc); // check if the row already exists Select q = buildSelectQuery(insert); SolrQueryExecution query = new SolrQueryExecution(ef, q, this.executionContext, this.metadata, this.connection); query.execute(); query.walkDocuments(new SolrDocumentCallback() { @Override public void walk(SolrDocument doc) { request.clear(); } }); if (request.getDocuments().isEmpty()) { throw new TranslatorException(SolrPlugin.Event.TEIID20007, SolrPlugin.Util.gs(SolrPlugin.Event.TEIID20007)); } // write the mutation UpdateResponse response = this.connection.update(request); if (response.getStatus() != 0) { throw new TranslatorException(SolrPlugin.Event.TEIID20003, SolrPlugin.Util.gs(SolrPlugin.Event.TEIID20003, response.getStatus())); } } else { UpdateRequest request = new UpdateRequest(); int batchSize = 1024; // bulk insert; should help Iterator<? extends List<?>> args = insert.getParameterValues(); while (args.hasNext()) { List<?> arg = args.next(); SolrInputDocument doc = new SolrInputDocument(); for (int i = 0; i < columns.size(); i++) { String columnName = SolrSQLHierarchyVistor.getColumnName(columns.get(i)); doc.addField(columnName, arg.get(i)); } this.updateCount++; request.add(doc); if ((this.updateCount % batchSize) == 0) { UpdateResponse response = this.connection.update(request); if (response.getStatus() != 0) { throw new TranslatorException(SolrPlugin.Event.TEIID20003, SolrPlugin.Util.gs(SolrPlugin.Event.TEIID20003, response.getStatus())); } request = new UpdateRequest(); } } if (request.getDocuments() != null && !request.getDocuments().isEmpty()) { // write the mutation UpdateResponse response = this.connection.update(request); if (response.getStatus() != 0) { throw new TranslatorException(SolrPlugin.Event.TEIID20003, SolrPlugin.Util.gs(SolrPlugin.Event.TEIID20003, response.getStatus())); } } } }