{"id":4132,"date":"2017-10-31T08:30:10","date_gmt":"2017-10-31T15:30:10","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=4132"},"modified":"2025-06-13T20:59:29","modified_gmt":"2025-06-14T03:59:29","slug":"query-natural-language-couchbase-servers-powerful-full-text-search","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/","title":{"rendered":"Query Natural Language with Couchbase Server&#8217;s Powerful Full Text Search"},"content":{"rendered":"<p>How many times have you written a SQL query that used a <code>LIKE<\/code> operator and some wildcards to find text in a string? What kind of performance did you get when you ran that against millions of records? It was probably not good, right?<\/p>\n<p>While you could use wildcards in SQL, it probably isn&#8217;t the best way for most scenarios. This includes N1QL queries. Instead, meet Full Text Search (FTS), a technology that has been around for a while, but recently included in <a href=\"https:\/\/www.couchbase.com\" target=\"_blank\" rel=\"noopener\">Couchbase<\/a> Server.<\/p>\n<p><!--more--><\/p>\n<p>The Full Text Search found in Couchbase is based on <a href=\"https:\/\/www.blevesearch.com\/\" target=\"_blank\" rel=\"noopener\">Bleve<\/a>, a search and indexing library written in Golang.<\/p>\n<h2>Fuzzy Searching with Full Text Search in Couchbase<\/h2>\n<p>When comparing FTS against a wildcard N1QL or SQL query, there is more to compare against than just the performance aspect. Take for example, its ability to match in a fuzzy fashion. Let&#8217;s assume we had the following query:<\/p>\n<pre class=\"lang:default decode:true\">SELECT * FROM `default` WHERE message LIKE '%bananas%';<\/pre>\n<p>What happens if the database has a record containing <strong>Bananas<\/strong> with a capital <strong>B<\/strong>? In this circumstance it would not be included in the results. What happens if you&#8217;re like me and can&#8217;t spell, leaving results like\u00a0<strong>bannanas<\/strong> in the database? It will not be included in the results either.<\/p>\n<p>With Full Text Search, the following query can be done with a fuzziness factor:<\/p>\n<pre class=\"lang:default decode:true \">banana~2<\/pre>\n<p>Ignoring that SQL and FTS have a different query syntax, the above would offer two factors of fuzziness. This means that two characters in the search term can be altered to get to our result. Our data could include any of the following:<\/p>\n<pre class=\"lang:default decode:true \">banana\r\nbannanna\r\nbana\r\nbnan<\/pre>\n<p>It isn&#8217;t limited to just the four above, but you get the idea.<\/p>\n<p>However, what if our database contains\u00a0<strong>bandana<\/strong> which in this case isn&#8217;t a typing mistake. Do we really want searches for legitimate other items appearing in our results?<\/p>\n<p>When executing a Full Text Search query for a term or set of terms, each result is scored based on how relevant it is to the initial search query. You can wrap your business logic around the scored results.<\/p>\n<h2>The Different Types of Queries in Couchbase&#8217;s Full Text Search<\/h2>\n<p>There are many different <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/fts\/fts-query-types.html\" target=\"_blank\" rel=\"noopener\">types of FTS queries<\/a> that can be performed in Couchbase. The type of query I&#8217;ve been mentioning so far is best classified as a Match Query, where the search term is used to match against the index with and without fuzziness.<\/p>\n<p>A few other types of queries include, but are not limited to:<\/p>\n<ul>\n<li>Match, Phrase, Fuzzy, Prefix, Regexp, Wildcard, Boolean Field<\/li>\n<li>Conjunction, Disjunction, Boolean, Doc ID<\/li>\n<li>Date Range, Numeric Range<\/li>\n<li>Query String<\/li>\n<\/ul>\n<p>Each type of query is designed for a different task. More about what they do can be found in the <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/fts\/fts-query-types.html\" target=\"_blank\" rel=\"noopener\">official documentation<\/a> regarding types of queries.<\/p>\n<h2>Creating a Full Text Search Index in Couchbase<\/h2>\n<p>Before searching can happen, an index must be created. This should not be confused with N1QL indexes as these are two very different things.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-4133 size-large\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/10\/fts-index-1024x476.png\" alt=\"Couchbase FTS Index Creation\" width=\"900\" height=\"418\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/fts-index-1024x476.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/fts-index-300x139.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/fts-index-768x357.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/fts-index-1536x713.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/fts-index-20x9.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/fts-index-1320x613.png 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/fts-index.png 2048w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/p>\n<p>Within the Couchbase Administrative Dashboard, you&#8217;ll have the opportunity to create Full Text Search indexes.<\/p>\n<p>To create an index, you&#8217;ll need to name it and assign it a bucket. A mapping must happen, so you must specify which document property represents the type of JSON document it is. Take the following for example:<\/p>\n<pre class=\"lang:default decode:true \">{\r\n    \"type\": \"person\",\r\n    \"firstname\": \"Nic\",\r\n    \"lastname\": \"Raboy\"\r\n}<\/pre>\n<p>The <code>type<\/code> property obviously says that this particular document is a <code>person<\/code> document.<\/p>\n<p>With the JSON type mapped to the document type, further mappings must occur. For example, let&#8217;s say that this particular index is for <code>person<\/code> documents. A new type mapping must be created and named appropriately to what might exist in the document&#8217;s <code>type<\/code> property.<\/p>\n<p>Now depending on how you want to index your fields, you can either choose to index everything, or index only certain properties. If you want to index certain properties, you would add a new child field underneath the type mapping that we had just created.<\/p>\n<p>Indexing certain properties means that when search is executed, only those properties will be searched, not every field in the document.<\/p>\n<h2>Including FTS in Your Applications<\/h2>\n<p>With an index created, we probably want to include functionality in an application using one of the various Couchbase Server SDKs.<\/p>\n<p>Let&#8217;s say we wanted to do a Match Query with Node.js. The code might look something like the following:<\/p>\n<pre class=\"lang:default decode:true \">var SearchQuery = Couchbase.SearchQuery;\r\nvar query = SearchQuery.new(\"INDEX-NAME-HERE\", SearchQuery.match(\"SEARCH-QUERY-HERE\"));\r\nquery.fields([\"FIELDS\", \"TO\", \"RETURN\", \"WITH\", \"PATH\", \"DEFINED\"]);\r\nquery.highlight(SearchQuery.HighlightStyle.HTML, \"FIELD\");\r\nbucket.query(query, callback);<\/pre>\n<p>In the above example, a new query is created against some specified index. The search term is passed into this query. The query can be further customized to include certain fields in the response as well as if the search hit should receive HTML markup to highlight it.<\/p>\n<p>The same thing can be accomplished in Java with the following code:<\/p>\n<pre class=\"lang:default decode:true \">MatchQuery fts = SearchQuery.match(\"SEARCH-QUERY-HERE\");\r\nSearchQuery query = new SearchQuery(\"INDEX-NAME-HERE\", fts);\r\nquery.fields(\"FIELDS\", \"TO\", \"RETURN\");\r\nquery.highlight(HighlightStyle.HTML, \"FIELD\");<\/pre>\n<p>Notice the similarities between the two very different languages? The APIs between the SDKs are meant to be similar and they can easily be extended, for example, a fuzziness value can be added.<\/p>\n<h2>Conclusion<\/h2>\n<p>Full Text Search (FTS) is an amazing feature in Couchbase Server 5.0 and above. It allows you to search very efficiently and more natural than adding a bunch of wildcard characters to a N1QL query.<\/p>\n<p>For more information on FTS, check out the <a href=\"https:\/\/developer.couchbase.com\" target=\"_blank\" rel=\"noopener\">Couchbase Developer Portal<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>How many times have you written a SQL query that used a LIKE operator and some wildcards to find text in a string? What kind of performance did you get when you ran that against millions of records? It was [&hellip;]<\/p>\n","protected":false},"author":63,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816,2165],"tags":[2079],"ppma_author":[9032],"class_list":["post-4132","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","category-full-text-search","tag-natural-language"],"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>Creating a Full Text Search Index and include in Couchbase Apps<\/title>\n<meta name=\"description\" content=\"Learn about Couchbase Server&#039;s powerful Full Text Search (FTS) functionality and see how it can be used to query natural language.\" \/>\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\/query-natural-language-couchbase-servers-powerful-full-text-search\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Query Natural Language with Couchbase Server&#039;s Powerful Full Text Search\" \/>\n<meta property=\"og:description\" content=\"Learn about Couchbase Server&#039;s powerful Full Text Search (FTS) functionality and see how it can be used to query natural language.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/thepolyglotdeveloper\" \/>\n<meta property=\"article:published_time\" content=\"2017-10-31T15:30:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T03:59:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/fts-index.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2048\" \/>\n\t<meta property=\"og:image:height\" content=\"951\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@nraboy\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/\"},\"author\":{\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\"},\"headline\":\"Query Natural Language with Couchbase Server&#8217;s Powerful Full Text Search\",\"datePublished\":\"2017-10-31T15:30:10+00:00\",\"dateModified\":\"2025-06-14T03:59:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/\"},\"wordCount\":866,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"natural language\"],\"articleSection\":[\"Couchbase Server\",\"Full-Text Search\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/\",\"name\":\"Creating a Full Text Search Index and include in Couchbase Apps\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-10-31T15:30:10+00:00\",\"dateModified\":\"2025-06-14T03:59:29+00:00\",\"description\":\"Learn about Couchbase Server's powerful Full Text Search (FTS) functionality and see how it can be used to query natural language.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Query Natural Language with Couchbase Server&#8217;s Powerful Full Text Search\"}]},{\"@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\/bb545ebe83bb2d12f91095811d0a72e1\",\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"caption\":\"Nic Raboy, Developer Advocate, Couchbase\"},\"description\":\"Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Apache Cordova. Nic writes about his development experiences related to making web and mobile development easier to understand.\",\"sameAs\":[\"https:\/\/www.thepolyglotdeveloper.com\",\"https:\/\/www.facebook.com\/thepolyglotdeveloper\",\"https:\/\/x.com\/nraboy\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/nic-raboy-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Creating a Full Text Search Index and include in Couchbase Apps","description":"Learn about Couchbase Server's powerful Full Text Search (FTS) functionality and see how it can be used to query natural language.","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\/query-natural-language-couchbase-servers-powerful-full-text-search\/","og_locale":"en_US","og_type":"article","og_title":"Query Natural Language with Couchbase Server's Powerful Full Text Search","og_description":"Learn about Couchbase Server's powerful Full Text Search (FTS) functionality and see how it can be used to query natural language.","og_url":"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/","og_site_name":"The Couchbase Blog","article_author":"https:\/\/www.facebook.com\/thepolyglotdeveloper","article_published_time":"2017-10-31T15:30:10+00:00","article_modified_time":"2025-06-14T03:59:29+00:00","og_image":[{"width":2048,"height":951,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/10\/fts-index.png","type":"image\/png"}],"author":"Nic Raboy, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@nraboy","twitter_misc":{"Written by":"Nic Raboy, Developer Advocate, Couchbase","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/"},"author":{"name":"Nic Raboy, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1"},"headline":"Query Natural Language with Couchbase Server&#8217;s Powerful Full Text Search","datePublished":"2017-10-31T15:30:10+00:00","dateModified":"2025-06-14T03:59:29+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/"},"wordCount":866,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["natural language"],"articleSection":["Couchbase Server","Full-Text Search"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/","url":"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/","name":"Creating a Full Text Search Index and include in Couchbase Apps","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-10-31T15:30:10+00:00","dateModified":"2025-06-14T03:59:29+00:00","description":"Learn about Couchbase Server's powerful Full Text Search (FTS) functionality and see how it can be used to query natural language.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/query-natural-language-couchbase-servers-powerful-full-text-search\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Query Natural Language with Couchbase Server&#8217;s Powerful Full Text Search"}]},{"@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\/bb545ebe83bb2d12f91095811d0a72e1","name":"Nic Raboy, Developer Advocate, Couchbase","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354","url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","caption":"Nic Raboy, Developer Advocate, Couchbase"},"description":"Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Apache Cordova. Nic writes about his development experiences related to making web and mobile development easier to understand.","sameAs":["https:\/\/www.thepolyglotdeveloper.com","https:\/\/www.facebook.com\/thepolyglotdeveloper","https:\/\/x.com\/nraboy"],"url":"https:\/\/www.couchbase.com\/blog\/author\/nic-raboy-2\/"}]}},"authors":[{"term_id":9032,"user_id":63,"is_guest":0,"slug":"nic-raboy-2","display_name":"Nic Raboy, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","author_category":"","last_name":"Raboy","first_name":"Nic","job_title":"","user_url":"https:\/\/www.thepolyglotdeveloper.com","description":"Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Apache Cordova. Nic writes about his development experiences related to making web and mobile development easier to understand."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/4132","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\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=4132"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/4132\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=4132"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=4132"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=4132"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=4132"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}