You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by yo...@apache.org on 2013/09/24 01:31:13 UTC
svn commit: r1525732 -
/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/util/JavaBinCodec.java
Author: yonik
Date: Mon Sep 23 23:31:13 2013
New Revision: 1525732
URL: http://svn.apache.org/r1525732
Log:
SOLR-5261: fix javabin block indexing back compat
Modified:
lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/util/JavaBinCodec.java
Modified: lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/util/JavaBinCodec.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/util/JavaBinCodec.java?rev=1525732&r1=1525731&r2=1525732&view=diff
==============================================================================
--- lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/util/JavaBinCodec.java (original)
+++ lucene/dev/trunk/solr/solrj/src/java/org/apache/solr/common/util/JavaBinCodec.java Mon Sep 23 23:31:13 2013
@@ -62,7 +62,6 @@ public class JavaBinCodec {
END = 15,
SOLRINPUTDOC = 16,
- SOLRINPUTDOC_CHILDS = 17,
// types that combine tag + length (or other info) in a single byte
TAG_AND_LEN = (byte) (1 << 5),
@@ -359,36 +358,32 @@ public class JavaBinCodec {
public SolrInputDocument readSolrInputDocument(DataInputInputStream dis) throws IOException {
int sz = readVInt(dis);
- dis.readByte(); // skip childDocuments tag
- int childsSize = readVInt(dis);
float docBoost = (Float)readVal(dis);
SolrInputDocument sdoc = new SolrInputDocument();
sdoc.setDocumentBoost(docBoost);
for (int i = 0; i < sz; i++) {
float boost = 1.0f;
String fieldName;
- Object boostOrFieldName = readVal(dis);
- if (boostOrFieldName instanceof Float) {
- boost = (Float)boostOrFieldName;
+ Object obj = readVal(dis); // could be a boost, a field name, or a child document
+ if (obj instanceof Float) {
+ boost = (Float)obj;
fieldName = (String)readVal(dis);
+ } else if (obj instanceof SolrInputDocument) {
+ sdoc.addChildDocument((SolrInputDocument)obj);
+ continue;
} else {
- fieldName = (String)boostOrFieldName;
+ fieldName = (String)obj;
}
Object fieldVal = readVal(dis);
sdoc.setField(fieldName, fieldVal, boost);
}
- for (int i = 0; i < childsSize; i++) {
- dis.readByte(); // skip solrinputdoc tag
- SolrInputDocument child = readSolrInputDocument(dis);
- sdoc.addChildDocument(child);
- }
return sdoc;
}
public void writeSolrInputDocument(SolrInputDocument sdoc) throws IOException {
- writeTag(SOLRINPUTDOC, sdoc.size());
List<SolrInputDocument> children = sdoc.getChildDocuments();
- writeTag(SOLRINPUTDOC_CHILDS, children==null ? 0 : children.size());
+ int sz = sdoc.size() + (children==null ? 0 : children.size());
+ writeTag(SOLRINPUTDOC, sz);
writeFloat(sdoc.getDocumentBoost());
for (SolrInputField inputField : sdoc.values()) {
if (inputField.getBoost() != 1.0f) {