{"id":9102,"date":"2020-08-10T16:24:52","date_gmt":"2020-08-10T23:24:52","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=9102"},"modified":"2025-06-13T21:20:28","modified_gmt":"2025-06-14T04:20:28","slug":"full-text_search_text_analysis","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/","title":{"rendered":"Text Analysis within a Full-Text Search Engine"},"content":{"rendered":"<p class=\"p4\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9127\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/08\/Screen-Shot-2020-08-10-at-5.25.41-PM.png\" alt=\"\" width=\"1100\" height=\"701\" \/>Full-Text Search refers to techniques for searching text content within a document or a collection of documents that hold textual content. A Full-Text search engine examines all the textual content within documents as it tries to match a single search term or several terms, text analysis being a pivotal component.<\/p>\n<p class=\"p4\">You\u2019ve probably heard of the most well-known Full-Text Search engine: <strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Apache_Lucene\"><span class=\"s1\">Lucene<\/span><\/a><\/strong> with <strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Elasticsearch\"><span class=\"s1\">Elasticsearch<\/span><\/a><\/strong> built on top of it. Couchbase\u2019s <span class=\"s1\">Full-Text Search (<strong>FTS<\/strong>) Engine<\/span> is powered by <strong><a href=\"https:\/\/github.com\/blevesearch\/bleve\"><span class=\"s1\">Bleve<\/span><\/a><\/strong>, and this article will showcase <strong>the various ways to analyze text<\/strong>\u00a0within this engine.<\/p>\n<p class=\"p4\">Bleve is an open-sourced text indexing and search library implemented in Go, developed in-house at Couchbase.<\/p>\n<p class=\"p4\">Couchbase\u2019s FTS engine supports indexes that subscribe to data residing within a <span class=\"s1\"><b>Couchbase Server<\/b><\/span> and indexes data that it ingests from the server. It\u2019s a distributed system &#8211; meaning it can partition data across multiple nodes in a cluster and searches involve scattering the request and gathering responses from across all nodes within the cluster before responding to the application.<\/p>\n<p class=\"p4\">The FTS engine distributes documents ingested for an index across a configurable number of partitions and these partitions could reside across multiple nodes within a cluster. Each partition follows the same set of rules that the FTS index is configured with &#8211; to analyze and index text into the full-text search database.<\/p>\n<p class=\"p4\">The <b>text analysis<\/b> component of a Full-Text search engine is responsible for breaking down the raw text into a list of words &#8211; which we\u2019ll refer to as tokens. These tokens are more suitable for indexing in the database and searching.<\/p>\n<p class=\"p4\">Couchbase\u2019s FTS Engine handles text indexing for JSON documents. It builds an index for the content that is analyzed and stores into the database &#8211; the index along with all the relevant metadata needed to link the tokens generated to the original documents within which they reside.<\/p>\n<p class=\"p1\">An <strong><a href=\"https:\/\/en.wikipedia.org\/wiki\/Inverted_index\"><span class=\"s1\">Inverted index<\/span><\/a><\/strong> is the data structure chosen to index the tokens generated from text, to make search queries faster. This index links every token generated to documents that contain the token.<\/p>\n<p class=\"p1\">For example, take the following documents ..<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-9129\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/08\/Screen-Shot-2020-08-10-at-6.05.12-PM.png\" alt=\"\" width=\"770\" height=\"120\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-6.05.12-PM.png 770w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-6.05.12-PM-300x47.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-6.05.12-PM-768x120.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-6.05.12-PM-20x3.png 20w\" sizes=\"auto, (max-width: 770px) 100vw, 770px\" \/><\/p>\n<p class=\"p1\">The inverted index for the tokens generated from the 2 documents above would resemble this..<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9110 \" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/08\/Screen-Shot-2020-08-10-at-4.23.03-PM.png\" alt=\"Inverted Index Example\" width=\"355\" height=\"339\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.23.03-PM.png 417w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.23.03-PM-300x286.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.23.03-PM-20x20.png 20w\" sizes=\"auto, (max-width: 355px) 100vw, 355px\" \/><\/p>\n<p class=\"p1\">Here\u2019s a diagram highlighting the components of the full-text search engine ..<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9124\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/08\/Screen-Shot-2020-08-10-at-4.40.16-PM.png\" alt=\"Couchbase Full-Text Search Engine\" width=\"987\" height=\"370\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.40.16-PM.png 1022w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.40.16-PM-300x112.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.40.16-PM-768x288.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.40.16-PM-20x7.png 20w\" sizes=\"auto, (max-width: 987px) 100vw, 987px\" \/><\/p>\n<h3 class=\"p1\"><b>A Text Analyzer<\/b><\/h3>\n<p class=\"p3\">The components of a text analyzer can broadly be classified into 2 categories:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>Tokenizer<\/li>\n<li>Filters<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Couchbase&#8217;s engine further categorizes filters into:<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>Character filters<\/li>\n<li>Token filters<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Before we dive into the function of each of these components, here\u2019s an overview of a text analyzer ..<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9117 \" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/08\/Screen-Shot-2020-08-10-at-4.28.32-PM.png\" alt=\"Text Analyzer\" width=\"954\" height=\"352\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.28.32-PM.png 1030w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.28.32-PM-300x111.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.28.32-PM-1024x378.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.28.32-PM-768x283.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.28.32-PM-20x7.png 20w\" sizes=\"auto, (max-width: 954px) 100vw, 954px\" \/><\/p>\n<h4 class=\"p1\"><b>Tokenizer<\/b><\/h4>\n<p class=\"p3\">A tokenizer is the first component to which the documents are subjected to. As the name suggests, it breaks the raw text into a list of tokens. This conversion will depend on a rule-set defined for the tokenizer.<\/p>\n<p class=\"p3\">Stock tokenizers ..<\/p>\n<p class=\"p3\">Take this sample text for an example: &#8220;<i>this is my email ID: <\/i>abhi123@cb.com&#8221;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9108 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/08\/Screen-Shot-2020-08-10-at-4.20.50-PM.png\" alt=\"Stock Tokenizers\" width=\"956\" height=\"390\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.20.50-PM.png 956w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.20.50-PM-300x122.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.20.50-PM-768x313.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.20.50-PM-20x8.png 20w\" sizes=\"auto, (max-width: 956px) 100vw, 956px\" \/><\/p>\n<p class=\"p1\">A couple of configurable tokenizers ..<\/p>\n<ul class=\"ul1\">\n<li style=\"list-style-type: none\">\n<ul class=\"ul1\">\n<li class=\"li1\"><b>Exception<\/b> .. This tokenizer allows the user to enter exception patterns (regular expressions) over the stock tokenizers.<\/li>\n<li class=\"li1\"><b>Regexp<\/b> .. This tokenizer extracts text that matches the pattern (a regular expression) as tokens.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p class=\"p1\">For example:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9112 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/08\/Screen-Shot-2020-08-10-at-4.24.20-PM.png\" alt=\"Regexp Tokenizer Example\" width=\"693\" height=\"126\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.24.20-PM.png 693w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.24.20-PM-300x55.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.24.20-PM-20x4.png 20w\" sizes=\"auto, (max-width: 693px) 100vw, 693px\" \/><\/p>\n<h4 class=\"p1\"><b>Character filter<\/b><\/h4>\n<p class=\"p3\">Character filters are to remove or replace undesirable characters.<\/p>\n<p class=\"p3\">Stock character filters ..<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9113 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/08\/Screen-Shot-2020-08-10-at-4.25.28-PM.png\" alt=\"Stock Character Filters\" width=\"961\" height=\"319\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.25.28-PM.png 961w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.25.28-PM-300x100.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.25.28-PM-768x255.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.25.28-PM-20x7.png 20w\" sizes=\"auto, (max-width: 961px) 100vw, 961px\" \/><\/p>\n<p class=\"p1\">A configurable character filter ..<\/p>\n<ul class=\"ul1\">\n<li style=\"list-style-type: none\">\n<ul class=\"ul1\">\n<li class=\"li1\"><b>Regexp<\/b> .. Accepts a valid regular expression and a replace string to replace the pattern matched.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p class=\"p1\">For example:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9114 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/08\/Screen-Shot-2020-08-10-at-4.26.14-PM.png\" alt=\"Regexp Character Filter Example\" width=\"885\" height=\"204\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.26.14-PM.png 885w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.26.14-PM-300x69.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.26.14-PM-768x177.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.26.14-PM-20x5.png 20w\" sizes=\"auto, (max-width: 885px) 100vw, 885px\" \/><\/p>\n<h4 class=\"p1\"><b>Token filter<\/b><\/h4>\n<p class=\"p3\">Token filters accept a token stream provided by a tokenizer and make modifications to the tokens in the stream. Most common forms of token filtering are normalizing and stemming.<\/p>\n<p class=\"p3\">Several stock token filters, here are a few prominent ones ..<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9115 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/08\/Screen-Shot-2020-08-10-at-4.27.20-PM.png\" alt=\"Stock Token Filters\" width=\"959\" height=\"599\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.27.20-PM.png 959w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.27.20-PM-300x187.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.27.20-PM-768x480.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.27.20-PM-20x12.png 20w\" sizes=\"auto, (max-width: 959px) 100vw, 959px\" \/><\/p>\n<p class=\"p1\">Configurable token filters ..<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9116 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/08\/Screen-Shot-2020-08-10-at-4.27.56-PM.png\" alt=\"Configurable Token Filters\" width=\"957\" height=\"950\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.27.56-PM.png 957w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.27.56-PM-300x298.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.27.56-PM-150x150.png 150w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.27.56-PM-768x762.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.27.56-PM-65x65.png 65w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.27.56-PM-50x50.png 50w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.27.56-PM-20x20.png 20w\" sizes=\"auto, (max-width: 957px) 100vw, 957px\" \/><\/p>\n<h3 class=\"p1\"><b>Stock Analyzers<\/b><\/h3>\n<p class=\"p3\">With Couchbase\u2019s Full-Text Search engine, the analyzers and all their components work on text that constitutes field values within JSON documents. They do not work on field names.<\/p>\n<p class=\"p3\">Consider the JSON document:<\/p>\n<pre class=\"\">{\r\n    \"field1\": \"value1\",\r\n    \"field2\": \"value2\",\r\n    \"array_field3\": [\r\n        \"value3\",\r\n        \"value4\"\r\n    ],\r\n    \"object_field4\": {\r\n        \"field5\": \"value5\",\r\n        \"field6\": \"value6\"\r\n    }\r\n}<\/pre>\n<p class=\"p1\">For the document, analyzers can be defined to work on &#8220;value1&#8221;, &#8220;value2&#8221;, &#8220;value3&#8221;, &#8220;value4&#8221;, &#8220;value5&#8221; and &#8220;value6&#8221;.<\/p>\n<p class=\"p1\">Couchbase offers several stock analyzers ..<\/p>\n<p class=\"p1\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-12364\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/08\/Screen-Shot-2021-10-25-at-9.29.39-AM.png\" alt=\"\" width=\"790\" height=\"275\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2021-10-25-at-9.29.39-AM.png 735w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2021-10-25-at-9.29.39-AM-300x104.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2021-10-25-at-9.29.39-AM-20x7.png 20w\" sizes=\"auto, (max-width: 790px) 100vw, 790px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p class=\"p1\">Here are a couple of examples ..<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9119 \" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/08\/Screen-Shot-2020-08-10-at-4.34.28-PM.png\" alt=\"Keyword Analyzer\" width=\"850\" height=\"326\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.34.28-PM.png 1008w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.34.28-PM-300x115.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.34.28-PM-768x295.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.34.28-PM-20x8.png 20w\" sizes=\"auto, (max-width: 850px) 100vw, 850px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9128\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/08\/Screen-Shot-2020-08-10-at-5.27.39-PM.png\" alt=\"\" width=\"875\" height=\"327\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-5.27.39-PM.png 1046w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-5.27.39-PM-300x112.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-5.27.39-PM-1024x383.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-5.27.39-PM-768x287.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-5.27.39-PM-20x7.png 20w\" sizes=\"auto, (max-width: 875px) 100vw, 875px\" \/><\/p>\n<h3 class=\"p1\"><b>Configuring a custom analyzer<\/b><\/h3>\n<ul class=\"ul1\">\n<li>The key to designing a custom analyzer is not just picking the right tokenizer and filters, but also applying them in the correct order.<\/li>\n<li class=\"li3\">So, the first step would be &#8211; to set up any customized tokenizers, character filters and token filters (along with custom word lists) if needed.<\/li>\n<li class=\"li3\">Next, create the analyzer by choosing the desired tokenizer, character filters and token filters. If you\u2019ve set up any customized ones, they\u2019ll show in the list of available options.<\/li>\n<li class=\"li3\">The ORDERING of the chosen character filters and token filters can make a difference in the output seen.<\/li>\n<li class=\"li3\">While picking a field value to index, choose the desired analyzer for it. Otherwise, an analyzer will be inherited for it from the parent mapping. Customized options will show in the list of available options.<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9121 \" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/08\/Screen-Shot-2020-08-10-at-4.35.46-PM.png\" alt=\"Configuring a text analyzer\" width=\"861\" height=\"344\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.35.46-PM.png 906w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.35.46-PM-300x120.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.35.46-PM-768x307.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-4.35.46-PM-20x8.png 20w\" sizes=\"auto, (max-width: 861px) 100vw, 861px\" \/><\/p>\n<h3 class=\"p1\"><b>Text analysis playground<\/b><\/h3>\n<p class=\"p3\">Test the behavior of our stock analyzers and your custom built analyzers here ..<\/p>\n<p class=\"p4\"><span class=\"s1\"><a href=\"https:\/\/bleveanalysis.couchbase.com\">https:\/\/bleveanalysis.couchbase.com<\/a><\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-9122 \" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/08\/Screen-Shot-2020-08-10-at-1.58.24-PM.png\" alt=\"Bleve Text Analysis Wizard \" width=\"977\" height=\"667\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-1.58.24-PM.png 1298w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-1.58.24-PM-300x205.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-1.58.24-PM-1024x699.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-1.58.24-PM-768x524.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-1.58.24-PM-235x160.png 235w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-08-10-at-1.58.24-PM-20x14.png 20w\" sizes=\"auto, (max-width: 977px) 100vw, 977px\" \/><\/p>\n<p>Here&#8217;s a good read on best practices while using Couchbase&#8217;s Full Text Search ..<\/p>\n<blockquote class=\"wp-embedded-content\" data-secret=\"ke5B67NlbB\"><p><a href=\"https:\/\/www.couchbase.com\/blog\/full-text-search-indexing-best-practices-by-use-case\/\">Full Text Search Indexing Best Practices by Use Case<\/a><\/p><\/blockquote>\n<p><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Full Text Search Indexing Best Practices by Use Case&#8221; &#8212; The Couchbase Blog\" src=\"https:\/\/www.couchbase.com\/blog\/full-text-search-indexing-best-practices-by-use-case\/embed\/#?secret=FnBNkY1Qeh#?secret=ke5B67NlbB\" data-secret=\"ke5B67NlbB\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Full-Text Search refers to techniques for searching text content within a document or a collection of documents that hold textual content. A Full-Text search engine examines all the textual content within documents as it tries to match a single search [&hellip;]<\/p>\n","protected":false},"author":37266,"featured_media":10014,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[2165,1820,7277],"tags":[1584,1261],"ppma_author":[8925],"class_list":["post-9102","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-full-text-search","category-golang","category-text-analysis","tag-bleve","tag-json"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Text Analysis within a Full-Text Search Engine - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Couchbase\u2019s Full-Text Search (FTS) Engine is powered by Bleve, and this article will showcase text analysis within this engine.\" \/>\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\/full-text_search_text_analysis\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Text Analysis within a Full-Text Search Engine\" \/>\n<meta property=\"og:description\" content=\"Couchbase\u2019s Full-Text Search (FTS) Engine is powered by Bleve, and this article will showcase text analysis within this engine.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-08-10T23:24:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T04:20:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-12-14-at-9.36.13-AM-e1607963918123.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1247\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Abhinav Dangeti, Software Engineer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Abhinav Dangeti, Software Engineer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/\"},\"author\":{\"name\":\"Abhinav Dangeti, Software Engineering, Couchbase inc.\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/574480df99d76a8837bba934d7324711\"},\"headline\":\"Text Analysis within a Full-Text Search Engine\",\"datePublished\":\"2020-08-10T23:24:52+00:00\",\"dateModified\":\"2025-06-14T04:20:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/\"},\"wordCount\":846,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-12-14-at-9.36.13-AM-e1607963918123.png\",\"keywords\":[\"bleve\",\"JSON\"],\"articleSection\":[\"Full-Text Search\",\"GoLang\",\"Text Analysis\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/\",\"name\":\"Text Analysis within a Full-Text Search Engine - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-12-14-at-9.36.13-AM-e1607963918123.png\",\"datePublished\":\"2020-08-10T23:24:52+00:00\",\"dateModified\":\"2025-06-14T04:20:28+00:00\",\"description\":\"Couchbase\u2019s Full-Text Search (FTS) Engine is powered by Bleve, and this article will showcase text analysis within this engine.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-12-14-at-9.36.13-AM-e1607963918123.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-12-14-at-9.36.13-AM-e1607963918123.png\",\"width\":1247,\"height\":800},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Text Analysis within a Full-Text Search Engine\"}]},{\"@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\/574480df99d76a8837bba934d7324711\",\"name\":\"Abhinav Dangeti, Software Engineering, Couchbase inc.\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9fa9293925a63fb1fab65e43636c534b\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6119ccf4cd5cba9ca4abd6f338d737445c23575e60f2b2729806c28185d0ee9b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6119ccf4cd5cba9ca4abd6f338d737445c23575e60f2b2729806c28185d0ee9b?s=96&d=mm&r=g\",\"caption\":\"Abhinav Dangeti, Software Engineering, Couchbase inc.\"},\"description\":\"Work on Couchbase's Distributed Full Text Search\",\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/abhinav\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Text Analysis within a Full-Text Search Engine - The Couchbase Blog","description":"Couchbase\u2019s Full-Text Search (FTS) Engine is powered by Bleve, and this article will showcase text analysis within this engine.","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\/full-text_search_text_analysis\/","og_locale":"en_US","og_type":"article","og_title":"Text Analysis within a Full-Text Search Engine","og_description":"Couchbase\u2019s Full-Text Search (FTS) Engine is powered by Bleve, and this article will showcase text analysis within this engine.","og_url":"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/","og_site_name":"The Couchbase Blog","article_published_time":"2020-08-10T23:24:52+00:00","article_modified_time":"2025-06-14T04:20:28+00:00","og_image":[{"width":1247,"height":800,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-12-14-at-9.36.13-AM-e1607963918123.png","type":"image\/png"}],"author":"Abhinav Dangeti, Software Engineer","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Abhinav Dangeti, Software Engineer","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/"},"author":{"name":"Abhinav Dangeti, Software Engineering, Couchbase inc.","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/574480df99d76a8837bba934d7324711"},"headline":"Text Analysis within a Full-Text Search Engine","datePublished":"2020-08-10T23:24:52+00:00","dateModified":"2025-06-14T04:20:28+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/"},"wordCount":846,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-12-14-at-9.36.13-AM-e1607963918123.png","keywords":["bleve","JSON"],"articleSection":["Full-Text Search","GoLang","Text Analysis"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/","url":"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/","name":"Text Analysis within a Full-Text Search Engine - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-12-14-at-9.36.13-AM-e1607963918123.png","datePublished":"2020-08-10T23:24:52+00:00","dateModified":"2025-06-14T04:20:28+00:00","description":"Couchbase\u2019s Full-Text Search (FTS) Engine is powered by Bleve, and this article will showcase text analysis within this engine.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-12-14-at-9.36.13-AM-e1607963918123.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/08\/Screen-Shot-2020-12-14-at-9.36.13-AM-e1607963918123.png","width":1247,"height":800},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/full-text_search_text_analysis\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Text Analysis within a Full-Text Search Engine"}]},{"@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\/574480df99d76a8837bba934d7324711","name":"Abhinav Dangeti, Software Engineering, Couchbase inc.","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9fa9293925a63fb1fab65e43636c534b","url":"https:\/\/secure.gravatar.com\/avatar\/6119ccf4cd5cba9ca4abd6f338d737445c23575e60f2b2729806c28185d0ee9b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6119ccf4cd5cba9ca4abd6f338d737445c23575e60f2b2729806c28185d0ee9b?s=96&d=mm&r=g","caption":"Abhinav Dangeti, Software Engineering, Couchbase inc."},"description":"Work on Couchbase's Distributed Full Text Search","url":"https:\/\/www.couchbase.com\/blog\/author\/abhinav\/"}]}},"authors":[{"term_id":8925,"user_id":37266,"is_guest":0,"slug":"abhinav","display_name":"Abhinav Dangeti, Software Engineer","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/6119ccf4cd5cba9ca4abd6f338d737445c23575e60f2b2729806c28185d0ee9b?s=96&d=mm&r=g","author_category":"","last_name":"Dangeti, Software Engineer","first_name":"Abhinav","job_title":"","user_url":"","description":"Work on Couchbase's Distributed Full Text Search"}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/9102","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\/37266"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=9102"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/9102\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/10014"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=9102"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=9102"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=9102"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=9102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}