{"id":5764,"date":"2018-09-04T10:25:40","date_gmt":"2018-09-04T17:25:40","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=5764"},"modified":"2025-06-13T20:27:48","modified_gmt":"2025-06-14T03:27:48","slug":"why-you-should-avoid-like-deep-dive-on-fts-part-1","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/","title":{"rendered":"Por qu\u00e9 debe evitar que le GUSTE % | Profundizaci\u00f3n en FTS - Parte 1"},"content":{"rendered":"<p>La b\u00fasqueda era probablemente una de las funciones m\u00e1s olvidadas en las aplicaciones del pasado. Sin embargo, en los \u00faltimos a\u00f1os se le ha prestado toda la atenci\u00f3n que merece, ya que por fin nos hemos dado cuenta de c\u00f3mo puede aumentar las ventas o moldear el comportamiento y el compromiso de los usuarios.<\/p>\n<p>En esta nueva serie de blogs, me gustar\u00eda ir de cero a experto. Como tal, al final de la misma, usted ser\u00e1 capaz de poner en pr\u00e1ctica las b\u00fasquedas \"<em>como un profesional<\/em>\".<\/p>\n<p>&nbsp;<\/p>\n<h2><strong>\u00bfPor qu\u00e9 \"Como %\" no es suficiente?<\/strong><\/h2>\n<p>Una b\u00fasqueda bien realizada debe ser esencialmente r\u00e1pida y pertinente; \"<strong>Como %<\/strong>\"no es ninguno de ellos. Veamos por qu\u00e9:<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>El problema de la velocidad<\/strong><\/h3>\n<p>Supongamos que queremos realizar una b\u00fasqueda de una pel\u00edcula por su t\u00edtulo. Una consulta SQL ingenua que buscara todas las pel\u00edculas de \"Star Trek\" tendr\u00eda el siguiente aspecto:<\/p>\n<pre class=\"lang:plsql decode:true\">Select * from Movies where title like \u201cStar Trek%\u201d<\/pre>\n<p>Por defecto, ejecutar\u00e1 un escaneo completo de la tabla intentando hacer coincidir este t\u00e9rmino con todas las filas. Pero puede optimizarse con un \u00edndice, que crear\u00e1 probablemente una estructura de \u00e1rbol B. Por lo tanto, incluso b\u00fasquedas como la siguiente aprovechar\u00edan parcialmente el \u00edndice:<\/p>\n<pre class=\"lang:plsql decode:true\">Select * from Movies where title like \u201cStar%Trek\u201d\r\nSelect * from Movies where title like \u201cSt%Trek\u201d<\/pre>\n<p>Pero, \u00bfy si el usuario es un gran fan de Batman y decide buscar el t\u00e9rmino \"Caballero Oscuro\"? Seg\u00fan el ejemplo anterior, nuestra consulta tendr\u00e1 el siguiente aspecto:<\/p>\n<pre class=\"lang:plsql decode:true\">Select * from Movies where title like \u201cDark Knight%\u201d<\/pre>\n<p>La b\u00fasqueda de arriba tiene el no traer\u00e1 ning\u00fan resultado como el verdadero nombre de la pel\u00edcula es \"<strong>En<\/strong> Dark Knight Rises\".  Para solucionar este problema, a\u00f1adamos un comod\u00edn al principio de nuestro t\u00e9rmino de b\u00fasqueda:<\/p>\n<pre class=\"lang:plsql decode:true\">Select * from Movies where title like \u201c%Dark Knight%\u201d<\/pre>\n<p>\u00a1Arreglado! \u00bfVerdad?  Desgraciadamente, no. La consulta anterior finalizar\u00e1 con un resultado como \"<strong>En<\/strong> Dark Knight Rises\", pero ya no aprovechar\u00e1 el \u00edndice y definitivamente no tendr\u00e1 un buen rendimiento a escala. <strong>Como %<\/strong> no \"entiende\" el contenido de su campo. M\u00e1s bien, trata un texto como algo \u00fanico, lo que hace que no sea la mejor opci\u00f3n para tratar cualquier cosa que tenga alg\u00fan tipo de estructura subyacente.<\/p>\n<p>Una posible soluci\u00f3n es utilizar MATCH, pero tambi\u00e9n se ha <a href=\"https:\/\/hackernoon.com\/dont-waste-your-time-with-mysql-full-text-search-61f644a54dfa\">Seg\u00fan los informes, es lento<\/a> en algunas bases de datos.<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>El problema de la relevancia<\/strong><\/h3>\n<p>\u00bfY si quisi\u00e9ramos buscar tambi\u00e9n el resumen de la pel\u00edcula? Una soluci\u00f3n ingenua ser\u00eda a\u00f1adir un nuevo campo a la consulta:<\/p>\n<pre class=\"lang:plsql decode:true\">Select * from Movies where title like \u201c%Dark Knight%\u201d or overview like \u201c%Dark Knight%\u201d<\/pre>\n<p>Este enfoque introduce un nuevo problema: cualquier pel\u00edcula que mencione \"El Caballero Oscuro\" en el resumen tiene la misma relevancia que las que lo llevan en el t\u00edtulo, y el orden de los resultados es totalmente incierto.<\/p>\n<p>Un error com\u00fan es pensar que UNION DISTINCT podr\u00eda resolver este problema. Sin embargo, la mayor\u00eda de los planificadores de consultas de hoy en d\u00eda ejecutan cada bloque de la uni\u00f3n en paralelo, lo que volver\u00e1 a estropear el orden\/relevancia.<\/p>\n<p>Si realmente desea implementar alg\u00fan tipo de relevancia utilizando SQL simple, una soluci\u00f3n sencilla es ejecutar dos consultas separadas y a\u00f1adir el resultado de una a la otra. Por supuesto, esta estrategia dista mucho de ser \u00f3ptima y a\u00fan tendr\u00eda que gestionar la duplicaci\u00f3n manualmente.<\/p>\n<p>Los ejemplos anteriores muestran una de las verdades t\u00e1citas de la b\u00fasqueda: <em><strong>El verdadero reto de la b\u00fasqueda no es encontrar coincidencias, sino clasificarlas.<\/strong><\/em>. Al fin y al cabo, emparejar un texto es una tarea muy sencilla, pero darle la puntuaci\u00f3n adecuada es algo que debe elaborarse cuidadosamente.<\/p>\n<p>&nbsp;<\/p>\n<h2><strong>Texto completo<\/strong><strong> la b\u00fasqueda acude al rescate<\/strong><\/h2>\n<p>Hay muchas formas diferentes de buscar un t\u00e9rmino, cada una centrada en una estrategia espec\u00edfica. Cubriremos la mayor\u00eda de ellas en los pr\u00f3ximos art\u00edculos, pero por ahora, centr\u00e9monos en por qu\u00e9 FTS es mucho mejor que \"<strong>Como %<\/strong>\":<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>La soluci\u00f3n para la velocidad<\/strong><\/h3>\n<p>Para poder consultar una base de datos con FTS, primero hay que crear un \u00edndice invertido. Este \u00edndice, a grandes rasgos, es un mapa de palabras y sus ocurrencias:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-5765\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/09\/Screen-Shot-2018-09-01-at-1.13.21-PM-1024x743.png\" alt=\"inverted_index\" width=\"615\" height=\"446\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/09\/Screen-Shot-2018-09-01-at-1.13.21-PM-1024x743.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/09\/Screen-Shot-2018-09-01-at-1.13.21-PM-300x218.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/09\/Screen-Shot-2018-09-01-at-1.13.21-PM-768x557.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/09\/Screen-Shot-2018-09-01-at-1.13.21-PM-20x15.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/09\/Screen-Shot-2018-09-01-at-1.13.21-PM.png 1260w\" sizes=\"auto, (max-width: 615px) 100vw, 615px\" \/><\/p>\n<p>Con el \u00edndice anterior en su lugar, la b\u00fasqueda de una palabra se convierte en una tarea sencilla, ya que puede obtener f\u00e1cilmente s\u00f3lo los documentos que contienen el t\u00e9rmino de destino.<\/p>\n<p>Tenga en cuenta que durante la creaci\u00f3n del \u00edndice invertido, hemos convertido las frases en una matriz de palabras, por lo que los comodines no son necesarios, ya que podemos comparar directamente los t\u00e9rminos de destino con nuestro \u00edndice invertido. No obstante, incluso el uso de comodines aqu\u00ed (Ej: *estrella*) seguir\u00e1 siendo m\u00e1s r\u00e1pido a escala, ya que s\u00f3lo tendr\u00e1 que iterar a trav\u00e9s de su \u00edndice para encontrar todas las coincidencias en lugar de escanear todos los documentos de su base de datos.<\/p>\n<p>A\u00fan no he mencionado nada sobre diccionarios, stemming, analizadores, tokenizadores y sin\u00f3nimos. Lo har\u00e9 en la segunda parte de esta serie.<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>La soluci\u00f3n para la pertinencia<\/strong><\/h3>\n<p>La estrategia para implementar un resultado de b\u00fasqueda relevante puede variar seg\u00fan el dominio en el que se est\u00e9 trabajando. En general, la relevancia puede manipularse de m\u00faltiples maneras, la m\u00e1s sencilla de las cuales se denomina \"boosting\". A grandes rasgos, el boosting es una forma sencilla de asignar un peso a las coincidencias de campo:<\/p>\n<p><strong>Consulta:<\/strong><\/p>\n<p><strong>T\u00edtulo:\"<\/strong>Star Trek\"^2 | <strong>Resumen:\"<\/strong>Star Trek\"<\/p>\n<p>En el ejemplo anterior, la puntuaci\u00f3n de una coincidencia para \"Star Trek\" en el <strong>t\u00edtulo<\/strong> valdr\u00e1 el doble que un partido en el <strong>visi\u00f3n general<\/strong> uno. B\u00e1sicamente, as\u00ed puede sugerir c\u00f3mo deben ordenarse los resultados de la b\u00fasqueda.<\/p>\n<p>&nbsp;<\/p>\n<h2><strong>\u00bfPor qu\u00e9 no utiliza todo el mundo la b\u00fasqueda de texto completo?<\/strong><\/h2>\n<p>Por lo general, FTS exige que se configure una infraestructura completamente nueva, se a\u00f1adan nuevas dependencias, se creen varios \u00edndices y, a continuaci\u00f3n, se env\u00eden todos los cambios de los documentos a un sistema externo como <a href=\"https:\/\/github.com\/couchbaselabs\/couchbase-elasticsearch-connector\/releases\/tag\/4.0.0-dp.1\">B\u00fasqueda el\u00e1stica<\/a> o Solr, incluso si s\u00f3lo desea implementar una b\u00fasqueda muy simple como nuestro ejemplo anterior. As\u00ed pues, los desarrolladores tienden a evitar esta ingente cantidad de trabajo hasta que se hace estrictamente necesario.<\/p>\n<p>Esa es una de las razones por las que hemos decidido incorporar un motor FTS llamado <a href=\"https:\/\/blevesearch.com\/\">Bleve<\/a> en Couchbase, entonces todo lo que necesitas hacer es crear un nuevo \u00edndice en la Consola Web:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-5767\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/09\/Screen-Shot-2018-09-04-at-5.18.00-PM.png\" alt=\"movie_index_creation\" width=\"697\" height=\"509\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/09\/Screen-Shot-2018-09-04-at-5.18.00-PM.png 922w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/09\/Screen-Shot-2018-09-04-at-5.18.00-PM-300x219.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/09\/Screen-Shot-2018-09-04-at-5.18.00-PM-768x561.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/09\/Screen-Shot-2018-09-04-at-5.18.00-PM-20x15.png 20w\" sizes=\"auto, (max-width: 697px) 100vw, 697px\" \/><\/p>\n<p>Y autom\u00e1ticamente podr\u00e1s hacer b\u00fasquedas de texto completo usando el SDK de Couchbase por defecto:<\/p>\n<pre class=\"lang:java decode:true\">String indexName = \"movies_index\";\r\nPhraseQuery query = SearchQuery.phrase(\"Star Trek\");\r\nSearchQueryResult result = movieRepository.getCouchbaseOperations().getCouchbaseBucket().query(\r\n    new SearchQuery(indexName, query).highlight().limit(20));<\/pre>\n<p>&nbsp;<\/p>\n<h3><strong>La mayor\u00eda de las bases de datos relacionales ya admiten b\u00fasquedas de texto completo, \u00bfpor qu\u00e9 no utilizarlas?<\/strong><\/h3>\n<p><strong>\u00a0<\/strong>En realidad, podr\u00eda ser una buena opci\u00f3n para peque\u00f1os casos de uso, y he o\u00eddo algunos comentarios positivos de los desarrolladores que lo hacen. Mi recomendaci\u00f3n personal es que consideres una herramienta adecuada, como Bleve, siempre que tengas un volumen considerable de datos, o siempre que necesites escalar masivamente.<\/p>\n<p>Otra gran ventaja de utilizar un motor FTS adecuado es el lenguaje de consulta. La mayor\u00eda de las bases de datos relacionales intentan reutilizar SQL para ello, y puede resultar realmente complicado si se intentan escribir b\u00fasquedas avanzadas. Al fin y al cabo, SQL no se dise\u00f1\u00f3 para tratar consultas de conjunci\u00f3n\/disyunci\u00f3n, facetas, factores de clasificaci\u00f3n complejos, etc.<\/p>\n<p>&nbsp;<\/p>\n<h4><strong>Serie de b\u00fasqueda de texto completo<\/strong><\/h4>\n<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/how-analyzers-tokenizers-filters-work-fts-part-2\/\">Comprender los analizadores y tokenizadores<\/a>\u00a0- Parte 2<\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/fuzzy-matching\/\">Emparejamiento difuso<\/a>\u00a0- Parte 3<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Search was probably one the most overlooked features in past applications. However, in recent years, it has really gotten all the attention it deserves as we have finally realized how it can increase sales or shape user\u2019s behavior and engagement. [&hellip;]<\/p>","protected":false},"author":8754,"featured_media":5768,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[2165],"tags":[],"ppma_author":[9059],"class_list":["post-5764","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-full-text-search"],"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>Why you should avoid LIKE % - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"This article focuses on why one should avoid using LIKE % for search and also check out why FTS is so much better than \u201cLike %.\" \/>\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\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Why you should avoid LIKE % | Deep Dive on FTS - Part 1\" \/>\n<meta property=\"og:description\" content=\"This article focuses on why one should avoid using LIKE % for search and also check out why FTS is so much better than \u201cLike %.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-09-04T17:25:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T03:27:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/09\/fts-part-1-header-2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"728\" \/>\n\t<meta property=\"og:image:height\" content=\"210\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Denis Rosa, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@deniswsrosa\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Denis Rosa, Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/\"},\"author\":{\"name\":\"Denis Rosa, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/fe3c5273e805e72a5294611a48f62257\"},\"headline\":\"Why you should avoid LIKE % | Deep Dive on FTS &#8211; Part 1\",\"datePublished\":\"2018-09-04T17:25:40+00:00\",\"dateModified\":\"2025-06-14T03:27:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/\"},\"wordCount\":1123,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/09\/fts-part-1-header-2.png\",\"articleSection\":[\"Full-Text Search\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/\",\"name\":\"Why you should avoid LIKE % - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/09\/fts-part-1-header-2.png\",\"datePublished\":\"2018-09-04T17:25:40+00:00\",\"dateModified\":\"2025-06-14T03:27:48+00:00\",\"description\":\"This article focuses on why one should avoid using LIKE % for search and also check out why FTS is so much better than \u201cLike %.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/09\/fts-part-1-header-2.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/09\/fts-part-1-header-2.png\",\"width\":728,\"height\":210},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Why you should avoid LIKE % | Deep Dive on FTS &#8211; Part 1\"}]},{\"@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\/fe3c5273e805e72a5294611a48f62257\",\"name\":\"Denis Rosa, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/be0716f6199cfb09417c92cf7a8fa8d6\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g\",\"caption\":\"Denis Rosa, Developer Advocate, Couchbase\"},\"description\":\"Denis Rosa is a Developer Advocate for Couchbase and lives in Munich - Germany. He has a solid experience as a software engineer and speaks fluently Java, Python, Scala and Javascript. Denis likes to write about search, Big Data, AI, Microservices and everything else that would help developers to make a beautiful, faster, stable and scalable app.\",\"sameAs\":[\"https:\/\/x.com\/deniswsrosa\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/denis-rosa\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Why you should avoid LIKE % - The Couchbase Blog","description":"This article focuses on why one should avoid using LIKE % for search and also check out why FTS is so much better than \u201cLike %.","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\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/","og_locale":"es_MX","og_type":"article","og_title":"Why you should avoid LIKE % | Deep Dive on FTS - Part 1","og_description":"This article focuses on why one should avoid using LIKE % for search and also check out why FTS is so much better than \u201cLike %.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/","og_site_name":"The Couchbase Blog","article_published_time":"2018-09-04T17:25:40+00:00","article_modified_time":"2025-06-14T03:27:48+00:00","og_image":[{"width":728,"height":210,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/09\/fts-part-1-header-2.png","type":"image\/png"}],"author":"Denis Rosa, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@deniswsrosa","twitter_misc":{"Written by":"Denis Rosa, Developer Advocate, Couchbase","Est. reading time":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/"},"author":{"name":"Denis Rosa, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/fe3c5273e805e72a5294611a48f62257"},"headline":"Why you should avoid LIKE % | Deep Dive on FTS &#8211; Part 1","datePublished":"2018-09-04T17:25:40+00:00","dateModified":"2025-06-14T03:27:48+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/"},"wordCount":1123,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/09\/fts-part-1-header-2.png","articleSection":["Full-Text Search"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/","url":"https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/","name":"Why you should avoid LIKE % - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/09\/fts-part-1-header-2.png","datePublished":"2018-09-04T17:25:40+00:00","dateModified":"2025-06-14T03:27:48+00:00","description":"This article focuses on why one should avoid using LIKE % for search and also check out why FTS is so much better than \u201cLike %.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/09\/fts-part-1-header-2.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/09\/fts-part-1-header-2.png","width":728,"height":210},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/why-you-should-avoid-like-deep-dive-on-fts-part-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Why you should avoid LIKE % | Deep Dive on FTS &#8211; Part 1"}]},{"@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\/fe3c5273e805e72a5294611a48f62257","name":"Denis Rosa, Defensor del Desarrollador, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/be0716f6199cfb09417c92cf7a8fa8d6","url":"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g","caption":"Denis Rosa, Developer Advocate, Couchbase"},"description":"Denis Rosa es un Developer Advocate para Couchbase y vive en Munich - Alemania. Tiene una s\u00f3lida experiencia como ingeniero de software y habla con fluidez Java, Python, Scala y Javascript. A Denis le gusta escribir sobre b\u00fasqueda, Big Data, AI, Microservicios y todo lo que pueda ayudar a los desarrolladores a hacer una aplicaci\u00f3n hermosa, m\u00e1s r\u00e1pida, estable y escalable.","sameAs":["https:\/\/x.com\/deniswsrosa"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/denis-rosa\/"}]}},"authors":[{"term_id":9059,"user_id":8754,"is_guest":0,"slug":"denis-rosa","display_name":"Denis Rosa, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/f8d1f5c13115122cab89d0f229b904480bfe20d3dfbb093fe9734cda5235d419?s=96&d=mm&r=g","author_category":"","last_name":"Rosa, Developer Advocate, Couchbase","first_name":"Denis","job_title":"","user_url":"","description":"Denis Rosa es un Developer Advocate para Couchbase y vive en Munich - Alemania. Tiene una s\u00f3lida experiencia como ingeniero de software y habla con fluidez Java, Python, Scala y Javascript. A Denis le gusta escribir sobre b\u00fasqueda, Big Data, AI, Microservicios y todo lo que pueda ayudar a los desarrolladores a hacer una aplicaci\u00f3n hermosa, m\u00e1s r\u00e1pida, estable y escalable."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/5764","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\/8754"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=5764"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/5764\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/5768"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=5764"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=5764"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=5764"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=5764"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}