Example #1
0
        /// <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;
        }