{"id":6565,"date":"2018-12-11T12:29:41","date_gmt":"2018-12-11T20:29:41","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=6565"},"modified":"2025-06-13T23:42:59","modified_gmt":"2025-06-14T06:42:59","slug":"n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/","title":{"rendered":"N1QL Y B\u00daSQUEDA: Aproveche el \u00edndice de b\u00fasqueda de texto completo (FTS) en N1QL"},"content":{"rendered":"<p>Con Couchbase v6.5, Full-Text Search est\u00e1 ahora integrado en el constructor de consultas N1QL de Couchbase. Los clientes ahora pueden aprovechar los \u00edndices FTS directamente con N1QL. Esto proporciona a los desarrolladores una \u00fanica API para combinar la coincidencia exacta de predicados N1QL y la potente b\u00fasqueda FTS.<\/p>\n<p>El \u00fanico reto constante para muchos desarrolladores de aplicaciones con bases de datos relacionales es el rendimiento de las consultas. Los problemas de rendimiento de las consultas suelen limitarse a lo que ofrecen las bases de datos relacionales: un servidor de bases de datos m\u00e1s grande o mejores \u00edndices.<\/p>\n<p>Con Couchbase, el rendimiento de las consultas N1QL tambi\u00e9n depende de componentes similares. Pero a diferencia de los RDBMS relacionales, la arquitectura de aislamiento de servicios de Couchbase significa que tanto el servicio de consultas como el de \u00edndices pueden escalarse de forma independiente. Con un dimensionamiento y una planificaci\u00f3n de la capacidad adecuados, Couchbase puede ofrecer un rendimiento vertiginoso, como se muestra en el siguiente ejemplo. <a href=\"https:\/\/www.altoros.com\/blog\/the-nosql-technical-comparison-report-cassandra-datastax-mongodb-and-couchbase-server\/\">Evaluaci\u00f3n comparativa de Altoros NoSQL<\/a> informe.<\/p>\n<h3>M\u00e1s all\u00e1 de los predicados de consulta - N1QL y la b\u00fasqueda<\/h3>\n<p>Los clientes pueden alcanzar tiempos de respuesta de milisegundos para consultas con \u00edndices apropiados. Sin embargo, hay ocasiones en las que los predicados de consulta utilizados por los \u00edndices GSI de Couchbase no se conocen de antemano. La soluci\u00f3n ideal es disponer de un sistema de indexaci\u00f3n que pueda funcionar con cualquier combinaci\u00f3n de los predicados de consulta disponibles.<\/p>\n<p>Couchbase Adaptive Indexing puede abordar muchos de estos casos de uso. Couchbase Full-Text Search es otra aproximaci\u00f3n a los casos de uso de patrones irregulares. Ofrecen capacidades de b\u00fasqueda de texto y difusa en cualquier campo del documento.<\/p>\n<p>Consideremos el siguiente documento de gesti\u00f3n de actividades. Una actividad:<\/p>\n<ol>\n<li>Pertenecer siempre a un cliente (cuenta)<\/li>\n<li>Tambi\u00e9n puede tener varios contactos de la organizaci\u00f3n del cliente y est\u00e1n representados por una matriz de contactos<\/li>\n<li>Puede incluir m\u00faltiples participantes, representados por una serie de usuarios.<\/li>\n<li>Puede ser de tipo cita o tarea, ambos con sus correspondientes atributos espec\u00edficos, como t\u00edtulo, fecha de inicio, fecha de vencimiento, etc.<\/li>\n<li>Una actividad de tipo Task tiene un array de ToDo list<\/li>\n<\/ol>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-6600 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/03\/Screen-Shot-2019-03-26-at-8.20.15-AM.png\" alt=\"sample json document for examples\" width=\"412\" height=\"356\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/03\/Screen-Shot-2019-03-26-at-8.20.15-AM.png 412w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/03\/Screen-Shot-2019-03-26-at-8.20.15-AM-300x259.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/03\/Screen-Shot-2019-03-26-at-8.20.15-AM-20x17.png 20w\" sizes=\"auto, (max-width: 412px) 100vw, 412px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-6598 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/03\/Screen-Shot-2019-03-26-at-8.18.22-AM.png\" alt=\"sample documents for examples\" width=\"492\" height=\"353\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/03\/Screen-Shot-2019-03-26-at-8.18.22-AM.png 492w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/03\/Screen-Shot-2019-03-26-at-8.18.22-AM-300x215.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/03\/Screen-Shot-2019-03-26-at-8.18.22-AM-20x14.png 20w\" sizes=\"auto, (max-width: 492px) 100vw, 492px\" \/><\/p>\n<h3>El caso pr\u00e1ctico<\/h3>\n<p>John, un representante de servicio de un centro de llamadas de Acme Ltd necesita recuperar todas las actividades del cliente mientras est\u00e1 al tel\u00e9fono con un cliente. El cliente puede proporcionar uno o varios de los siguientes valores para que John consulte la aplicaci\u00f3n:<\/p>\n<ol>\n<li>T\u00edtulo de la actividad:  La consulta debe devolver todas las actividades que tengan este texto, en cualquier parte del t\u00edtulo de la actividad.<\/li>\n<li>Nombre del cliente: El nombre del cliente introducido puede estar incompleto, por lo que la consulta debe utilizar un comod\u00edn para que coincida con el nombre del cliente.<\/li>\n<li>Nombre, correo electr\u00f3nico o tel\u00e9fono de contacto: El cliente tambi\u00e9n puede facilitar los datos de la persona de contacto. Estos tambi\u00e9n pueden estar incompletos.<\/li>\n<li>Un nombre de participante: El cliente tambi\u00e9n puede facilitar el nombre del gestor de la cuenta, un empleado de Acme con el que el cliente ha interactuado y que ha participado en la actividad.<\/li>\n<li>Fecha de la actividad: El cliente puede proporcionar un intervalo de fechas y horas para las actividades.<\/li>\n<li>El representante de servicio puede recibir una o varias de las informaciones anteriores. El patr\u00f3n no es fijo.<\/li>\n<li>El tiempo de respuesta de la consulta debe ser de ~1 seg.<\/li>\n<li>El volumen de datos es de 3 millones al a\u00f1o y el periodo de conservaci\u00f3n de 3 a\u00f1os.<\/li>\n<\/ol>\n<h3>\u00bfCu\u00e1les son los retos para recuperar esta informaci\u00f3n?<\/h3>\n<ol>\n<li>El cliente puede proporcionar hasta ocho campos, y ninguno de ellos es obligatorio. Esto supondr\u00eda un reto para el dise\u00f1o eficiente de un \u00edndice GSI, ya que la clave principal del \u00edndice debe estar presente para la selecci\u00f3n del \u00edndice. Como resultado, los \u00edndices GSI no pueden cubrir todos los casos.<\/li>\n<li>Coincidencia de comodines: El t\u00edtulo de la actividad, el nombre del cliente y del contacto, el correo electr\u00f3nico o el tel\u00e9fono pueden estar incompletos, por lo que no funcionar\u00e1 una t\u00e9cnica de coincidencia de predicado N1QL exacta.<\/li>\n<li>Tanto los contactos como los participantes son objetos hijos de las actividades. En el modelo de datos JSON, los contactos y los participantes se representan como dos matrices separadas. Si necesitamos un \u00edndice de cobertura, debe incluir uno o m\u00e1s elementos de ambas matrices.<\/li>\n<\/ol>\n<h3>Las soluciones<\/h3>\n<h4>1. El enfoque m\u00e1s sencillo es utilizar predicados N1QL:<\/h4>\n<pre class=\"\">SELECT meta(a).id, a.title, a.startDate, a.account.name, a.contacts, a.participants\r\nFROM crm a \r\nWHERE \r\n  a.type='activity' \r\nAND a.activityType='Appointment'\r\nAND\r\n(\r\n    LOWER(a.title) LIKE '%artificial intelligence%'\r\nAND LOWER(a.account.name) LIKE '%collins%' \r\nAND ANY c in a.contacts SATISFIES LOWER(c.name) LIKE '%rogers%' END\r\nAND ANY c in a.contacts SATISFIES LOWER(c.email) = 'elliottpamela@gmail.com' END \r\nAND ANY c in a.contacts SATISFIES c.phone LIKE '%6816%' END\r\nAND ANY p in a.participants SATISFIES LOWER(p.name)LIKE '%james%' END \r\nAND a.startDate between '2016-08-29' AND '2016-08-30'\r\n)<\/pre>\n<p>Tambi\u00e9n se requerir\u00edan los siguientes \u00edndices GSI:<\/p>\n<pre class=\"lang:default decode:true\">CREATE INDEX crm_activity_appt_startDate_accid_dur ON `crm`(`activityType`,`startDate`,`accid`,`duration`) WHERE `type` = 'activity'\r\nCREATE INDEX act_account_name_type ON `crm`(lower((`account`).`name`)) WHERE `type` = 'activity'\r\nCREATE INDEX act_contacts_name_type ON `crm`(DISTINCT ARRAY lower(`c`.`name`) FOR c in contacts END) WHERE `type` = 'activity'\r\nCREATE INDEX act_contacts_email_type ON `crm`(DISTINCT ARRAY lower(`c`.`email`) FOR c in contacts END) WHERE `type` = 'activity'\r\nCREATE INDEX act_contacts_phone_type ON `crm`(DISTINCT ARRAY c.phone FOR c in contacts END) WHERE `type` = 'activity'\r\nCREATE INDEX act_participants_name_type ON `crm`(DISTINCT ARRAY lower(`p`.`name`) FOR p in participants END) WHERE `type` = 'activity'\r\n\r\n<\/pre>\n<p>Tenga en cuenta que la consulta anterior puede utilizar uno o todos los \u00edndices disponibles para mejorar el rendimiento de la consulta. Sin embargo, todav\u00eda podr\u00eda haber problemas de rendimiento debido a la necesidad de que el plan de consulta utilice la operaci\u00f3n IntersectScan.<\/p>\n<h4>2. Apalancamiento \u00cdndice FTS<\/h4>\n<p>Couchbase Full-Text Search podr\u00eda ayudar con este caso de uso, debido a su capacidad de b\u00fasqueda no exacta, as\u00ed como la capacidad de buscar en los campos en cualquier orden. He aqu\u00ed un \u00edndice FTS que puede cubrir los criterios de b\u00fasqueda.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-6619 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2019\/04\/Screen-Shot-2019-04-02-at-8.30.05-AM.png\" alt=\"couchbase dialog for setting up a full text search index\" width=\"602\" height=\"828\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/Screen-Shot-2019-04-02-at-8.30.05-AM.png 602w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/Screen-Shot-2019-04-02-at-8.30.05-AM-218x300.png 218w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/Screen-Shot-2019-04-02-at-8.30.05-AM-300x413.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/Screen-Shot-2019-04-02-at-8.30.05-AM-15x20.png 15w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/p>\n<h4>2.1 Usando CURL - Esto es soportado en Couchbase 5.5<\/h4>\n<pre class=\"lang:default decode:true\">SELECT meta(a).id, a.title,a.startDate, a.account.name, a.contacts, a.participants\r\nFROM CURL(\"https:\/\/localhost:8094\/api\/index\/all_acts\/query\", \r\n          {\"request\":\"POST\",\"header\":\"Content-Type: application\/json\", \"data\":\r\n          '{   \"explain\":false,\"fields\": [\"*\"],\r\n                \"highlight\": {},\r\n                \"query\": {\"conjuncts\":\r\n                      [  {\"field\":\"title\", \"match\": \"artificial intelligence\"} \r\n                      ,  {\"field\":\"contacts.name\", \"match\":\"rogers\"}\r\n                      ,  {\"field\":\"contacts.email\", \"match\":\"eliottpamela@gmail.com\"} \r\n                      ,  {\"field\":\"contacts.phone\", \"wildcard\":\"*6816*\"} \r\n                      ,  {\"field\":\"participants.name\", \"match\":\"james\"} \r\n                      ,  {\"field\":\"account.name\", \"match\":\"collins\"}\r\n                      ,  {\"field\":\"startDate\",\"start\": \"2016-08-29\", \"end\":\"2016-08-30\", \"inclusive_start\": true, \r\n                                      \"inclusive_end\": true} \r\n                      ] \r\n                  }\r\n          }',\r\n          \"user\":\"Administrator:password\"}) result\r\n          UNNEST result.hits h\r\n          INNER JOIN crm a ON (h.id = meta(a).id) AND a.type='activity'<\/pre>\n<h4>2.2 Con integraci\u00f3n N1QL\/FTS mediante SEARCH_QUERY<\/h4>\n<pre class=\"\">SELECT meta(a).id, a.title,a.startDate, a.account.name, a.contacts, a.participants\r\nFROM SEARCH_QUERY(\"all_acts\",{\"explain\":false,\"fields\": [\"*\"],\"highlight\": {}, \r\n    \"query\": {\"conjuncts\":[ {\"field\":\"title\", \"match\": \"artificial intelligence\"} \r\n                          , {\"field\":\"contacts.name\", \"match\":\"rogers\"} \r\n                          ,  {\"field\":\"contacts.email\", \"match\":\"eliottpamela@gmail.com\"} \r\n                          ,  {\"field\":\"contacts.phone\", \"wildcard\":\"*6816*\"} \r\n                          ,  {\"field\": \"participants.name\", \"match\":\"james\"} \r\n                          ,  {\"field\": \"account.name\", \"match\":\"collins\"}\r\n                          ,  {\"field\": \"startDate\",\"start\": \"2016-08-29\", \"end\":\"2016-08-30\", \"inclusive_start\": true, \r\n                                   \"inclusive_end\": true}\r\n                          ] }}\r\n              ) as result\r\n          UNNEST result.hits h\r\n          INNER JOIN crm a ON (h.id = meta(a).id) AND a.type='activity'<\/pre>\n<h4>2.3 Con integraci\u00f3n N1QL\/FTS mediante el predicado SEARCH de N1QL<\/h4>\n<pre class=\"\">SELECT meta(a).id, a.title,a.startDate, a.account.name, a.contacts, a.participants\r\nFROM crm a\r\nWHERE a.type='activity'\r\nAND a.activityType='Appointment'\r\nAND SEARCH(a,\r\n   {\"conjuncts\":\r\n     [  {\"field\":\"title\", \"match\": \"artificial intelligence\"},\r\n        {\"field\":\"contacts.name\", \"match\":\"rogers\"},\r\n        {\"field\":\"contacts.email\", \"match\":\"eliottpamela@gmail.com\"},\r\n        {\"field\":\"contacts.phone\", \"wildcard\":\"*6816*\"},\r\n        {\"field\": \"participants.name\", \"match\":\"james\"},\r\n        {\"field\": \"account.name\", \"match\":\"collins\"},\r\n        {\"field\": \"startDate\",\"start\": \"2016-08-29\", \"end\":\"2016-08-30\", \"inclusive_start\": true, \"inclusive_end\": true}\r\n     ]\r\n    }, \r\n    {\"index\":\"all_acts\"}) \/* good practice to provide the specific index name *\/<\/pre>\n<p><strong>Notas:<\/strong><\/p>\n<ol>\n<li>El ejemplo anterior aprovecha la consulta compuesta FTS con la construcci\u00f3n conjunct para combinar todos los predicados en un \u00fanico SEARCH(). Consulta la documentaci\u00f3n de Couchbase FTS para m\u00e1s detalles sobre <a href=\"https:\/\/docs.couchbase.com\/server\/6.0\/fts\/fts-query-types.html\">FTS Tipo de consulta<\/a><\/li>\n<li>El enunciado anterior debe construirse mediante programaci\u00f3n para incluir s\u00f3lo los predicados de b\u00fasqueda necesarios.<\/li>\n<li>El dise\u00f1o del \u00edndice FTS debe incluir los campos que se utilizan en SEARCH()<\/li>\n<li>El predicado N1QL\u00a0<strong>a.type='actividad'\u00a0<\/strong>debe estar presente en la consulta para la selecci\u00f3n del \u00edndice FTS<\/li>\n<\/ol>\n<p>N1QL SEARCH_QUERY y SEARCH predicate es parte de la caracter\u00edstica N1QL\/FTS Integration disponible en Couchbase v6.5 y actualizar\u00e9 el blog con la documentaci\u00f3n cuando est\u00e9 disponible.<\/p>\n<p>Para m\u00e1s detalles sobre la sintaxis de la consulta FTS <a href=\"https:\/\/docs.couchbase.com\/server\/6.0\/fts\/full-text-intro.html\">https:\/\/docs.couchbase.com\/server\/6.0\/fts\/full-text-intro.html<\/a><\/p>\n<h4>N1QL y resumen de b\u00fasqueda:<\/h4>\n<ol>\n<li>La integraci\u00f3n N1QL\/FTS permite que una consulta utilice la construcci\u00f3n de b\u00fasqueda FTS directamente como predicados de b\u00fasqueda.<\/li>\n<li>El uso del \u00edndice FTS en la consulta N1QL alivia la necesidad de disponer de un \u00edndice exacto para cada patr\u00f3n de consulta<\/li>\n<li>N1QL\/FTS ofrece a los desarrolladores una opci\u00f3n adicional para resolver los problemas de rendimiento de las consultas<\/li>\n<li>El \u00edndice FTS es adecuado cuando se necesita buscar en varios campos en cualquier orden.<\/li>\n<li>El \u00edndice FTS se adapta bien a los casos en los que hay que buscar campos en varias matrices<\/li>\n<\/ol>\n<h4><b>Recursos<\/b><\/h4>\n<ul>\n<li><i>Descargar<\/i>:\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/es\/downloads\/?family=server&amp;product=couchbase-server-developer\">Descargar Couchbase Server 6.5<\/a><i><\/i><\/li>\n<li><i>Documentaci\u00f3n<\/i>:\u00a0<a href=\"https:\/\/docs.couchbase.com\/server\/6.5\/introduction\/whats-new.html\">Novedades de Couchbase Server 6.5<\/a><i><\/i><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/tag\/6-5\/\"><b>Todos los blogs de 6.5<\/b><\/a><\/li>\n<\/ul>\n<p>Nos encantar\u00eda que nos dijera qu\u00e9 le han parecido las funciones de la versi\u00f3n 6.5 y en qu\u00e9 beneficiar\u00e1n a su empresa en el futuro. Por favor, comparta su opini\u00f3n a trav\u00e9s de los comentarios o en el <a href=\"https:\/\/www.couchbase.com\/blog\/es\/forums\/\">foro<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>With Couchbase v6.5, Full-Text Search is now integrated into the Couchbase N1QL query construct. Customers can now leverage FTS indexes directly with N1QL. This provides developers a single API to combine N1QL exact predicate matching and FTS powerful searching. The [&hellip;]<\/p>","protected":false},"author":26326,"featured_media":10676,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,2165,1812],"tags":[],"ppma_author":[8919],"class_list":["post-6565","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-full-text-search","category-n1ql-query"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>N1QL &amp; SEARCH: Leverage Full-Text Search (FTS) Index in N1QL<\/title>\n<meta name=\"description\" content=\"With Couchbase 6.5 Full Text Search is now available through N1QL queries - the single API combines N1QL exact predicate and powerful FTS matching.\" \/>\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\/es\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"N1QL &amp; SEARCH: Leverage Full-Text Search (FTS) Index in N1QL\" \/>\n<meta property=\"og:description\" content=\"With Couchbase 6.5 Full Text Search is now available through N1QL queries - the single API combines N1QL exact predicate and powerful FTS matching.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-12-11T20:29:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T06:42:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/Screen-Shot-2019-04-02-at-8.30.05-AM-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"656\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Binh Le\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Binh Le\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/\"},\"author\":{\"name\":\"Binh Le\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f89064928e262c71eb43bee996c48c63\"},\"headline\":\"N1QL &amp; SEARCH: Leverage Full-Text Search (FTS) Index in N1QL\",\"datePublished\":\"2018-12-11T20:29:41+00:00\",\"dateModified\":\"2025-06-14T06:42:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/\"},\"wordCount\":1019,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/Screen-Shot-2019-04-02-at-8.30.05-AM-1.png\",\"articleSection\":[\"Best Practices and Tutorials\",\"Full-Text Search\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/\",\"name\":\"N1QL &amp; SEARCH: Leverage Full-Text Search (FTS) Index in N1QL\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/Screen-Shot-2019-04-02-at-8.30.05-AM-1.png\",\"datePublished\":\"2018-12-11T20:29:41+00:00\",\"dateModified\":\"2025-06-14T06:42:59+00:00\",\"description\":\"With Couchbase 6.5 Full Text Search is now available through N1QL queries - the single API combines N1QL exact predicate and powerful FTS matching.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/Screen-Shot-2019-04-02-at-8.30.05-AM-1.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/Screen-Shot-2019-04-02-at-8.30.05-AM-1.png\",\"width\":1200,\"height\":656},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"N1QL &amp; SEARCH: Leverage Full-Text Search (FTS) Index in N1QL\"}]},{\"@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\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\/f89064928e262c71eb43bee996c48c63\",\"name\":\"Binh Le\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/5b68c37e30928a9d7b2c8470b1a303b7\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g\",\"caption\":\"Binh Le\"},\"description\":\"Binh Le is a Principal Product Manager for Couchbase Query service. Prior to Couchbase, he worked at Oracle and led the product management team for Sales Cloud Analytics and CRM OnDemand. Binh holds a Bachelor's Degree in Computer Science from the University of Brighton, UK.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/binh-le-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"N1QL Y B\u00daSQUEDA: Aproveche el \u00edndice de b\u00fasqueda de texto completo (FTS) en N1QL","description":"With Couchbase 6.5 Full Text Search is now available through N1QL queries - the single API combines N1QL exact predicate and powerful FTS matching.","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\/es\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/","og_locale":"es_MX","og_type":"article","og_title":"N1QL &amp; SEARCH: Leverage Full-Text Search (FTS) Index in N1QL","og_description":"With Couchbase 6.5 Full Text Search is now available through N1QL queries - the single API combines N1QL exact predicate and powerful FTS matching.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/","og_site_name":"The Couchbase Blog","article_published_time":"2018-12-11T20:29:41+00:00","article_modified_time":"2025-06-14T06:42:59+00:00","og_image":[{"width":1200,"height":656,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/Screen-Shot-2019-04-02-at-8.30.05-AM-1.png","type":"image\/png"}],"author":"Binh Le","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Binh Le","Est. reading time":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/"},"author":{"name":"Binh Le","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f89064928e262c71eb43bee996c48c63"},"headline":"N1QL &amp; SEARCH: Leverage Full-Text Search (FTS) Index in N1QL","datePublished":"2018-12-11T20:29:41+00:00","dateModified":"2025-06-14T06:42:59+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/"},"wordCount":1019,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/Screen-Shot-2019-04-02-at-8.30.05-AM-1.png","articleSection":["Best Practices and Tutorials","Full-Text Search","SQL++ \/ N1QL Query"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/","url":"https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/","name":"N1QL Y B\u00daSQUEDA: Aproveche el \u00edndice de b\u00fasqueda de texto completo (FTS) en N1QL","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/Screen-Shot-2019-04-02-at-8.30.05-AM-1.png","datePublished":"2018-12-11T20:29:41+00:00","dateModified":"2025-06-14T06:42:59+00:00","description":"With Couchbase 6.5 Full Text Search is now available through N1QL queries - the single API combines N1QL exact predicate and powerful FTS matching.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/Screen-Shot-2019-04-02-at-8.30.05-AM-1.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2019\/04\/Screen-Shot-2019-04-02-at-8.30.05-AM-1.png","width":1200,"height":656},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/n1ql-and-search-how-to-leverage-fts-index-in-n1ql-query\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"N1QL &amp; SEARCH: Leverage Full-Text Search (FTS) Index in N1QL"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","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":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@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\/f89064928e262c71eb43bee996c48c63","name":"Binh Le","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/5b68c37e30928a9d7b2c8470b1a303b7","url":"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g","caption":"Binh Le"},"description":"Binh Le is a Principal Product Manager for Couchbase Query service. Prior to Couchbase, he worked at Oracle and led the product management team for Sales Cloud Analytics and CRM OnDemand. Binh holds a Bachelor's Degree in Computer Science from the University of Brighton, UK.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/binh-le-2\/"}]}},"authors":[{"term_id":8919,"user_id":26326,"is_guest":0,"slug":"binh-le-2","display_name":"Binh Le","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g","author_category":"","last_name":"Le","first_name":"Binh","job_title":"","user_url":"","description":"Binh Le es director de producto principal del servicio de consultas de Couchbase. Antes de Couchbase, trabaj\u00f3 en Oracle y dirigi\u00f3 el equipo de gesti\u00f3n de productos para Sales Clould Analytics y CRM OnDemand. Binh es licenciado en Inform\u00e1tica por la Universidad de Brighton, Reino Unido."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/6565","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/26326"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=6565"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/6565\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/10676"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=6565"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=6565"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=6565"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=6565"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}