/// <summary> /// /// </summary> /// <param name="includeContent"></param> /// <param name="includeSearchables"></param> /// <param name="dt"></param> /// <param name="docRow"></param> /// <returns></returns> Document RetrieveDocument(bool includeContent, bool includeSearchables, DBreeze.DataTypes.NestedTable dt, DBreeze.DataTypes.Row<int,byte[]> docRow) { byte[] btDoc = docRow.Value; Document doc = null; if (btDoc[0] == 0) { //Non compressed doc = btDoc.Substring(1).DeserializeProtobuf<Document>(); } else { doc = btDoc.Substring(1).DecompressGZip().DeserializeProtobuf<Document>(); } if (includeContent && doc.Content != null) { //16 bytes link to Content doc.Content = dt.SelectDataBlock(doc.Content); } if (includeSearchables && doc.InternalStructure != null) { byte[] btSearchables = dt.SelectDataBlock(doc.InternalStructure); if (btSearchables[0] == 1) { //Zipped btSearchables = btSearchables.Substring(1).DecompressGZip(); } else btSearchables = btSearchables.Substring(1); doc.Searchables = System.Text.Encoding.UTF8.GetString(btSearchables); } doc.DocumentSequentialId = docRow.Key; return doc; }