You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2015/01/23 23:27:33 UTC
svn commit: r1654422 - in /lucene/dev/branches/branch_5x: ./ solr/
solr/CHANGES.txt solr/solrj/
solr/solrj/src/java/org/apache/solr/client/solrj/SolrClient.java
solr/solrj/src/test/org/apache/solr/client/solrj/GetByIdTest.java
Author: shalin
Date: Fri Jan 23 22:27:33 2015
New Revision: 1654422
URL: http://svn.apache.org/r1654422
Log:
SOLR-6449: Add first class support for Real Time Get in Solrj
Added:
lucene/dev/branches/branch_5x/solr/solrj/src/test/org/apache/solr/client/solrj/GetByIdTest.java
- copied unchanged from r1654420, lucene/dev/trunk/solr/solrj/src/test/org/apache/solr/client/solrj/GetByIdTest.java
Modified:
lucene/dev/branches/branch_5x/ (props changed)
lucene/dev/branches/branch_5x/solr/ (props changed)
lucene/dev/branches/branch_5x/solr/CHANGES.txt (contents, props changed)
lucene/dev/branches/branch_5x/solr/solrj/ (props changed)
lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/SolrClient.java
Modified: lucene/dev/branches/branch_5x/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/CHANGES.txt?rev=1654422&r1=1654421&r2=1654422&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_5x/solr/CHANGES.txt Fri Jan 23 22:27:33 2015
@@ -45,6 +45,9 @@ New Features
* SOLR-6845: Add a âbuildOnStartupâ option for suggesters. (Tomás Fernández Löbbe)
+* SOLR-6449: Add first class support for Real Time Get in Solrj.
+ (Anurag Sharma, Steve Davids via shalin)
+
Other Changes
----------------------
* SOLR-7014: Collapse identical catch branches in try-catch statements. (shalin)
Modified: lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/SolrClient.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/SolrClient.java?rev=1654422&r1=1654421&r2=1654422&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/SolrClient.java (original)
+++ lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/SolrClient.java Fri Jan 23 22:27:33 2015
@@ -26,13 +26,19 @@ import org.apache.solr.client.solrj.requ
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.response.SolrPingResponse;
import org.apache.solr.client.solrj.response.UpdateResponse;
+import org.apache.solr.common.SolrDocument;
+import org.apache.solr.common.SolrDocumentList;
import org.apache.solr.common.SolrInputDocument;
+import org.apache.solr.common.StringUtils;
+import org.apache.solr.common.params.CommonParams;
+import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.List;
@@ -332,6 +338,56 @@ public abstract class SolrClient impleme
}
/**
+ * Retrieves the SolrDocument associated with the given identifier.
+ *
+ * @return retrieved SolrDocument, null if no document is found.
+ */
+ public SolrDocument getById(String id) throws SolrServerException {
+ return getById(id, null);
+ }
+
+ /**
+ * Retrieves the SolrDocument associated with the given identifier and uses
+ * the SolrParams to execute the request.
+ *
+ * @return retrieved SolrDocument, null if no document is found.
+ */
+ public SolrDocument getById(String id, SolrParams params) throws SolrServerException {
+ SolrDocumentList docs = getById(Arrays.asList(id), params);
+ if (!docs.isEmpty()) {
+ return docs.get(0);
+ }
+ return null;
+ }
+
+ /**
+ * Retrieves the SolrDocuments associated with the given identifiers.
+ * If a document was not found, it will not be added to the SolrDocumentList.
+ */
+ public SolrDocumentList getById(Collection<String> ids) throws SolrServerException {
+ return getById(ids, null);
+ }
+
+ /**
+ * Retrieves the SolrDocuments associated with the given identifiers and uses
+ * the SolrParams to execute the request.
+ * If a document was not found, it will not be added to the SolrDocumentList.
+ */
+ public SolrDocumentList getById(Collection<String> ids, SolrParams params) throws SolrServerException {
+ if (ids == null || ids.isEmpty()) {
+ throw new IllegalArgumentException("Must provide an identifier of a document to retrieve.");
+ }
+
+ ModifiableSolrParams reqParams = new ModifiableSolrParams(params);
+ if (StringUtils.isEmpty(reqParams.get(CommonParams.QT))) {
+ reqParams.set(CommonParams.QT, "/get");
+ }
+ reqParams.set("ids", (String[]) ids.toArray());
+
+ return query(reqParams).getResults();
+ }
+
+ /**
* SolrServer implementations need to implement how a request is actually processed
*/
public abstract NamedList<Object> request(final SolrRequest request) throws SolrServerException, IOException;