{"id":6937,"date":"2019-05-21T00:46:23","date_gmt":"2019-05-21T07:46:23","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=6937"},"modified":"2019-05-21T21:47:28","modified_gmt":"2019-05-22T04:47:28","slug":"scorch-index-type-why-does-it-matter","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/","title":{"rendered":"Scorch Index Type &#8211; Why does it matter?"},"content":{"rendered":"<p><strong>Index types<\/strong> in Full Text Search (FTS) &#8211; refers to the collective specification of the inverted index format and it&#8217;s storage aspects. Scorch is the advanced and evolving index type. But before delving further into the details of scorch, its imperative to skim over the former indexing type known as the upside_down.<\/p>\n<p><span style=\"font-weight: 400\">In upside_down indexing format, the storage aspects of the backing index are offloaded to a key value store. <\/span><span style=\"font-weight: 400\">In essence what this means is that, all the rudimentary information retrieval data structures like terms dictionary, postings lists etc are all get stored in form of keys and values in a generic key value store. Like many similar systems, the keys were decorated with more details to identify what the value represents. Let\u2019s skip the details here, as the main topic under discussion is scorch. The upside_down was the default index type until Couchbase server 5.5.0 release.<\/span><\/p>\n<p><span style=\"font-weight: 400\">The carefully designed <a href=\"https:\/\/github.com\/blevesearch\/bleve\">bleve<\/a>(indexing library) interfaces helped us to experiment and performance benchmark inverted index representation on different key-value systems (eg: levelDB, RockDB, mossStore etc). But sooner the key value representation proved to be a bottleneck in scaling the inverted index. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Few of the major issues observed are as below,<\/span><\/p>\n<ul>\n<li><span style=\"font-weight: 400\">huge index size amplification mainly due to the naive data representation in KV formats. <\/span><\/li>\n<li><span style=\"font-weight: 400\">data deduplication potentials weren\u2019t tapped.<\/span><\/li>\n<li><span style=\"font-weight: 400\">less friendly representation to serve natural language queries like fuzzy\/edit distance.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">These flaws snowballed into bigger scalability worries with massive data sets and that led to the decision to redesign the inverted index representation and the disk storage.\u00a0 <\/span><span style=\"font-weight: 400\">And those efforts conceived the newer index type called <\/span>scorch<span style=\"font-weight: 400\">.<\/span><\/p>\n<h5><strong>Scorch<\/strong><\/h5>\n<p><span style=\"font-weight: 400\">Many fundamental design concepts of scorch are inspired from that of <a href=\"https:\/\/lucene.apache.org\/\">Lucene<\/a>. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Scorch follows a segment based index architecture. <\/span><span style=\"font-weight: 400\">Each index is a collection of segments and each segment is a self sufficient immutable sub index which is capable of serving the query. <\/span><\/p>\n<p><span style=\"font-weight: 400\">With scorch, we decided to represent documents using numeric identifiers internally. This opened up huge optimisation opportunities in the inverted index representation.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Now, let\u2019s take a deeper look into the segment architecture. Each segment is composed of these major building blocks.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"attachment-266x266 size-266x266\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/05\/image1-1.png\" alt=\"\" width=\"246\" height=\"148\" \/><\/p>\n<p><b>Term Dictionary <\/b><span style=\"font-weight: 400\">&#8211; Arguably the most important part of an inverted index. It stores every indexed term, along with its document frequency and a pointer to the posting lists per field.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Scorch uses Finite State Transducers (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Finite-state_transducer\">FST<\/a>) for implementing this term dictionaries. FST based implementations helps in memory savings and query optimisations for advanced queries like edit distance or regex based queries by leveraging the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Deterministic_finite_automaton\">DFA<\/a> property of FSTs.<\/span><\/p>\n<p><b>Postings Lists<\/b><span style=\"font-weight: 400\"> &#8211; Gives the list of documents on which a search term occurs. <\/span><span style=\"font-weight: 400\">As we have given numeric IDs for representing documents internally, this can be best represented as a bitmap. Bitmap representations helps in saving space, faster lookups and SSE optimised code.<\/span><\/p>\n<p><b>Frequency Norms\/Location Details<\/b><span style=\"font-weight: 400\"> &#8211; Frequency and norm details of indexed terms are used while scoring. Location or positional details are needed for performing phrase queries or highlighting the results etc. So, these unordered numeric values are <a href=\"https:\/\/golang.org\/pkg\/encoding\/binary\/\">varint<\/a> encoded and stored using proprietary chunking logic.<\/span><\/p>\n<p><b>Stored Fields<\/b><span style=\"font-weight: 400\"> &#8211; Helps users to store unanalysed field values in the index and retrieve them as a part of the search results. This helps to avoid further data lookup trips to the KV.\u00a0 <\/span><span style=\"font-weight: 400\">Scorch uses compression techniques on the proprietary chunking logic to represent this data.<\/span><\/p>\n<p><b>DocValues<\/b><span style=\"font-weight: 400\"> &#8211; performs reverse lookups in the index, for eg: find all values indexed for a given document. This helps in powering queries like facets or sorting on custom fields etc. Scorch uses a columnar representation on top of the proprietary compressed chunking logic to represent this portion of the index.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Scorch uses a newer binary format called \u201czap\u201d for representing these byte flattened segment contents on disk. And these disk segment bytes are mmap\u2019ed.<\/span><\/p>\n<p><span style=\"font-weight: 400\"><strong>TLDR;<\/strong> &#8211; Above optimisations in scorch brought index size reduction of up to 4X and query performance improvements(on latency and throughput) of up to 20X for many queries in our internal benchmarking. <\/span><\/p>\n<p><span style=\"font-weight: 400\">Scorch is the default index type since Couchbase server release 6.0.0 and more features are getting added and road mapped for scorch in upcoming FTS releases. <\/span><\/p>\n<p><span style=\"font-weight: 400\">So, it\u2019s highly recommended to upgrade the indexes to scorch index formats, if you have a genuine FTS use case.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Index types in Full Text Search (FTS) &#8211; refers to the collective specification of the inverted index format and it&#8217;s storage aspects. Scorch is the advanced and evolving index type. But before delving further into the details of scorch, its [&hellip;]<\/p>\n","protected":false},"author":26446,"featured_media":5639,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,1816,2165],"tags":[],"ppma_author":[9075],"class_list":["post-6937","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-server","category-full-text-search"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Scorch Index Type - Why does it matter? - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Couchbase Full Text Search (FTS) index types and its performance implications, especially about the latest scorch and the former upside_down index type\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Scorch Index Type - Why does it matter?\" \/>\n<meta property=\"og:description\" content=\"Couchbase Full Text Search (FTS) index types and its performance implications, especially about the latest scorch and the former upside_down index type\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-05-21T07:46:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-05-22T04:47:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/08\/6.0-Timers-Blog-Image.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"666\" \/>\n\t<meta property=\"og:image:height\" content=\"336\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Sreekanth Sivasankaran\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sreekanth Sivasankaran\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/\"},\"author\":{\"name\":\"Sreekanth Sivasankaran\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/7bbda3cf57beae8bd9cba686c0c6fe7a\"},\"headline\":\"Scorch Index Type &#8211; Why does it matter?\",\"datePublished\":\"2019-05-21T07:46:23+00:00\",\"dateModified\":\"2019-05-22T04:47:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/\"},\"wordCount\":726,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/6.0-Timers-Blog-Image.jpeg\",\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Server\",\"Full-Text Search\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/\",\"name\":\"Scorch Index Type - Why does it matter? - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/6.0-Timers-Blog-Image.jpeg\",\"datePublished\":\"2019-05-21T07:46:23+00:00\",\"dateModified\":\"2019-05-22T04:47:28+00:00\",\"description\":\"Couchbase Full Text Search (FTS) index types and its performance implications, especially about the latest scorch and the former upside_down index type\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/6.0-Timers-Blog-Image.jpeg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/6.0-Timers-Blog-Image.jpeg\",\"width\":666,\"height\":336,\"caption\":\"Timers Couchbase Eventing Functions\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Scorch Index Type &#8211; Why does it matter?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/7bbda3cf57beae8bd9cba686c0c6fe7a\",\"name\":\"Sreekanth Sivasankaran\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/a60af16118050d1ea3a927388dc4dfb7\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/01af11c4c81e84e518ab465b39b7a5b3c874de79270af74043cc3d4edb92ff4e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/01af11c4c81e84e518ab465b39b7a5b3c874de79270af74043cc3d4edb92ff4e?s=96&d=mm&r=g\",\"caption\":\"Sreekanth Sivasankaran\"},\"description\":\"Sreekanth Sivasankaran is a Principal Engineer\/Senior Engineering manager at Couchbase R&amp;D. He leads the design and development of distributed and highly performant Search functionality. And he has over 17 years of product development experience in various domains like telecom, handsets, enterprise software, big data technologies, and distributed systems.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/sreekanth-sivasankaran\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Scorch Index Type - Why does it matter? - The Couchbase Blog","description":"Couchbase Full Text Search (FTS) index types and its performance implications, especially about the latest scorch and the former upside_down index type","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/","og_locale":"en_US","og_type":"article","og_title":"Scorch Index Type - Why does it matter?","og_description":"Couchbase Full Text Search (FTS) index types and its performance implications, especially about the latest scorch and the former upside_down index type","og_url":"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/","og_site_name":"The Couchbase Blog","article_published_time":"2019-05-21T07:46:23+00:00","article_modified_time":"2019-05-22T04:47:28+00:00","og_image":[{"width":666,"height":336,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/08\/6.0-Timers-Blog-Image.jpeg","type":"image\/jpeg"}],"author":"Sreekanth Sivasankaran","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Sreekanth Sivasankaran","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/"},"author":{"name":"Sreekanth Sivasankaran","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/7bbda3cf57beae8bd9cba686c0c6fe7a"},"headline":"Scorch Index Type &#8211; Why does it matter?","datePublished":"2019-05-21T07:46:23+00:00","dateModified":"2019-05-22T04:47:28+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/"},"wordCount":726,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/6.0-Timers-Blog-Image.jpeg","articleSection":["Best Practices and Tutorials","Couchbase Server","Full-Text Search"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/","url":"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/","name":"Scorch Index Type - Why does it matter? - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/6.0-Timers-Blog-Image.jpeg","datePublished":"2019-05-21T07:46:23+00:00","dateModified":"2019-05-22T04:47:28+00:00","description":"Couchbase Full Text Search (FTS) index types and its performance implications, especially about the latest scorch and the former upside_down index type","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/6.0-Timers-Blog-Image.jpeg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/08\/6.0-Timers-Blog-Image.jpeg","width":666,"height":336,"caption":"Timers Couchbase Eventing Functions"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/scorch-index-type-why-does-it-matter\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Scorch Index Type &#8211; Why does it matter?"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/7bbda3cf57beae8bd9cba686c0c6fe7a","name":"Sreekanth Sivasankaran","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/a60af16118050d1ea3a927388dc4dfb7","url":"https:\/\/secure.gravatar.com\/avatar\/01af11c4c81e84e518ab465b39b7a5b3c874de79270af74043cc3d4edb92ff4e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/01af11c4c81e84e518ab465b39b7a5b3c874de79270af74043cc3d4edb92ff4e?s=96&d=mm&r=g","caption":"Sreekanth Sivasankaran"},"description":"Sreekanth Sivasankaran is a Principal Engineer\/Senior Engineering manager at Couchbase R&amp;D. He leads the design and development of distributed and highly performant Search functionality. And he has over 17 years of product development experience in various domains like telecom, handsets, enterprise software, big data technologies, and distributed systems.","url":"https:\/\/www.couchbase.com\/blog\/author\/sreekanth-sivasankaran\/"}]}},"authors":[{"term_id":9075,"user_id":26446,"is_guest":0,"slug":"sreekanth-sivasankaran","display_name":"Sreekanth Sivasankaran","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/01af11c4c81e84e518ab465b39b7a5b3c874de79270af74043cc3d4edb92ff4e?s=96&d=mm&r=g","author_category":"","last_name":"Sivasankaran","first_name":"Sreekanth","job_title":"","user_url":"","description":"Sreekanth Sivasankaran is a Principal Engineer\/Senior Engineering Manager at Couchbase R&amp;D. He leads the design and development of distributed and highly performant Search functionality. And he has over 17 years of product development experience in various domains like telecom, handsets, enterprise software, big data technologies, and distributed systems."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/6937","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/26446"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=6937"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/6937\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/5639"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=6937"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=6937"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=6937"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=6937"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}