{"id":2269,"date":"2016-05-19T14:04:20","date_gmt":"2016-05-19T14:04:20","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2269"},"modified":"2025-10-09T07:13:58","modified_gmt":"2025-10-09T14:13:58","slug":"full-text-search-in-net-with-couchbase-4-5","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/full-text-search-in-net-with-couchbase-4-5\/","title":{"rendered":"B\u00fasqueda de texto completo en .NET con Couchbase 4.5"},"content":{"rendered":"<p><a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.5\/fts\/full-text-intro.html?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">B\u00fasqueda de texto completo (o FTS)<\/a> es una nueva caracter\u00edstica que est\u00e1 siendo lanzada como vista previa para desarrolladores en Couchbase 4.5. No est\u00e1 pensada para producci\u00f3n, y a\u00fan no est\u00e1 soportada, pero es un vistazo a lo que est\u00e1 por venir.<\/p>\n<p>Al ofrecer la posibilidad de buscar, un simple <code>LIKE '%foo%'<\/code> con <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.5\/developer-guide\/querying.html?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">N1QL<\/a> no es suficiente. Sus usuarios esperan una experiencia de b\u00fasqueda m\u00e1s rica: que tenga en cuenta el idioma y ordene los resultados por su relevancia.<\/p>\n<p>En esta entrada del blog, te lo voy a mostrar:<\/p>\n<ul>\n<li>C\u00f3mo crear un \u00edndice de b\u00fasqueda de texto completo<\/li>\n<li>C\u00f3mo ejecutar una consulta de b\u00fasqueda de texto completo en la aplicaci\u00f3n <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/4.5\/admin\/ui-intro.html?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">Consola Couchbase<\/a><\/li>\n<li>C\u00f3mo ejecutar una consulta de b\u00fasqueda de texto completo con resaltado en ASP.NET<\/li>\n<\/ul>\n<h2>Crear un \u00edndice de b\u00fasqueda de texto completo<\/h2>\n<p>En primer lugar, debe asegurarse de que est\u00e1 utilizando <a href=\"https:\/\/www.couchbase.com\/blog\/es\/nosql-databases\/downloads\/?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">Couchbase 4.5 (beta, al menos)<\/a>Aseg\u00farate de que tienes acceso a la consola de Couchbase y de que tu cl\u00faster est\u00e1 ejecutando un servicio Full Text. Puedes comprobar si tienes un servicio Full Text en ejecuci\u00f3n haciendo clic en \"Nodos de Servidor\" en la Consola de Couchbase. Los servicios (como Full Text) tienen que ser activados\/desactivados cuando se a\u00f1ade un nodo al cluster. Si necesitas un repaso, echa un vistazo a mi <a href=\"https:\/\/www.couchbase.com\/blog\/es\/couchbase-with-windows-and-.net---part-1\/\">entrada de blog sobre c\u00f3mo instalar y configurar Couchbase en Windows<\/a>.<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/may\/full-text-search-in-.net-with-couchbase-4.5\/servernodesservices_001.png\" alt=\"Server Nodes - Services available\" \/><\/p>\n<p>Voy a configurar un \u00edndice de b\u00fasqueda de texto completo en el <code>`viaje-muestra<\/code> cubo de datos de muestra. Puede instalarlo yendo a Ajustes -&gt; Cubos de muestra, seleccionando 'travel-sample' y haciendo clic en \"Crear\".<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/may\/full-text-search-in-.net-with-couchbase-4.5\/createsamplebucket_002.png\" alt=\"Create a sample bucket\" \/><\/p>\n<p>En estos datos de ejemplo, hay documentos de tipo \"landmark\". Entre otras cosas, estos documentos contienen campos de \"contenido\". He aqu\u00ed un fragmento de uno de los documentos landmark. (ID 'landmark_16079' si nos est\u00e1 siguiendo):<\/p>\n<pre><code>{\r\n  \"title\": \"London\/City of London\",\r\n  \"name\": \"20 Fenchurch Street\",\r\n  \"content\": \"The unusual \"walkie talkie\" profile of this under-construction skyscraper by Rafael Vinoly has seen it grab the headlines.\",\r\n  \"type\": \"landmark\"\r\n}\r\n<\/code><\/pre>\n<p>Con esa estructura en mente, vamos a crear el \u00edndice. Ve a \u00cdndices-&gt;Texto completo, y haz clic en \"Nuevo \u00edndice de texto completo\".<\/p>\n<p>Voy a nombrar el \u00edndice <code>viaje-muestra-idx<\/code>y ponerlo en el <code>viaje-muestra<\/code> cubo. Hay un mont\u00f3n de opciones aqu\u00ed, pero s\u00f3lo voy a cubrir las asignaciones de tipo. Expanda \"Type Mappings\", y haga clic en \"Add Type Mapping\". Esto le permite restringir la b\u00fasqueda de texto completo a documentos de un determinado tipo (en este caso, \"landmark\", que coincide con el campo \"type\"). Marque tambi\u00e9n la casilla \"indexar s\u00f3lo los campos especificados\"; de lo contrario, se indexar\u00e1n todos los campos de los documentos para la b\u00fasqueda. Pulsa \"Aceptar\".<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/may\/full-text-search-in-.net-with-couchbase-4.5\/createfulltextsearchforlandmark_003.png\" alt=\"Create full text search for landmark documents\" \/><\/p>\n<p>A continuaci\u00f3n, pase el rat\u00f3n por encima de la asignaci\u00f3n de tipo \"punto de referencia\" y haga clic en el icono <code>+<\/code> y haga clic en \"insertar campo secundario\". Si quieres indexar datos de b\u00fasqueda que est\u00e1n m\u00e1s abajo en la jerarqu\u00eda de tu documento, entonces necesitar\u00edas 'insertar campo hijo' (tantos niveles como haga falta) hasta llegar a \u00e9l. En nuestro caso, el campo de contenido est\u00e1 en el nivel ra\u00edz, as\u00ed que no necesito hacer eso.<\/p>\n<p>Para el campo hijo, introduzca el nombre del campo (\"contenido\") en el campo, deje todo lo dem\u00e1s como est\u00e1, y marque la casilla \"almacenar\" (m\u00e1s sobre esto m\u00e1s adelante), y pulse \"ok\".<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/may\/full-text-search-in-.net-with-couchbase-4.5\/createfulltextsearchforlandmarkcontentfield_004.png\" alt=\"Create child field for full text search\" \/><\/p>\n<p>Por \u00faltimo, edite la asignaci\u00f3n de tipos \"por defecto\" y desmarque la opci\u00f3n \"activado\". Esta asignaci\u00f3n permitir\u00eda la b\u00fasqueda en todos los documentos, pero en este ejemplo queremos limitarla s\u00f3lo a landmark. Pulsa \"Aceptar\" y \"Crear \u00edndice\".<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/may\/full-text-search-in-.net-with-couchbase-4.5\/createfulltextsearchdisabledefault_005.png\" alt=\"Disable default type mapping on full text search\" \/><\/p>\n<p>Despu\u00e9s de pulsar \"Crear \u00edndice\", se te mostrar\u00e1 una vista general del \u00edndice que acabas de crear. Comenzar\u00e1 inmediatamente a indexar documentos. Si pulsa el bot\u00f3n <code>Actualizar<\/code> se le mostrar\u00e1 el recuento de los documentos indexados hasta el momento.<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/may\/full-text-search-in-.net-with-couchbase-4.5\/createfulltextindexing1_005.png\" alt=\"Full Text Search indexing in progress\" \/><\/p>\n<p>Ser\u00e1 100% cuando est\u00e9 completo.<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/may\/full-text-search-in-.net-with-couchbase-4.5\/createfulltextindexing2_006.png\" alt=\"Full Text Search indexing complete\" \/><\/p>\n<h2>Ejecutar una consulta de b\u00fasqueda de texto completo en la consola de Couchbase<\/h2>\n<p>Antes de entrar en C#\/.NET, puedes probar la b\u00fasqueda de texto completo directamente desde la consola. Vaya a \u00cdndices-&gt;Texto completo, y seleccione el \u00edndice de texto completo que acaba de crear. Introduce un t\u00e9rmino de b\u00fasqueda (si est\u00e1s utilizando la muestra de viajes, \"posada\", \"rascacielos\" o \"bed and breakfast\" son buenos t\u00e9rminos para probar.<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/may\/full-text-search-in-.net-with-couchbase-4.5\/usingthefulltextsearch_007.png\" alt=\"Using the full text search\" \/><\/p>\n<p>Cuando haga clic en buscar, obtendr\u00e1 una p\u00e1gina de resultados de b\u00fasqueda (ID del documento y un fragmento de contenido) ordenados seg\u00fan su puntuaci\u00f3n de relevancia. Observe que los t\u00e9rminos de b\u00fasqueda aparecen resaltados en el fragmento de contenido. Habilitar \"almacenar\" en el campo hijo hace que esto funcione. Si no lo hace, seguir\u00e1 obteniendo los resultados de los documentos en el orden correspondiente, pero no obtendr\u00e1 el fragmento de contenido resaltado.<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/may\/full-text-search-in-.net-with-couchbase-4.5\/fulltextsearchresults_008.png\" alt=\"Full Text Search results in Couchbase Console\" \/><\/p>\n<p>Tenga en cuenta que la b\u00fasqueda de texto completo utiliza <a href=\"https:\/\/www.blevesearch.com\/docs\/Query-String-Query\/\">Bleve<\/a>y permite realizar b\u00fasquedas m\u00e1s complejas (frases exactas, consultas booleanas, etc.). Pruebe a buscar <code>\"cama y desayuno\"<\/code> o <code>cama-desayuno<\/code>por ejemplo, a ver qu\u00e9 pasa.<\/p>\n<h2>Consulta de b\u00fasqueda de texto completo con resaltado en ASP.NET<\/h2>\n<p>Una vez que est\u00e9s satisfecho con el \u00edndice de b\u00fasqueda de texto completo que has creado, es hora de sacarlo de la consola de Couchbase y llevarlo a una aplicaci\u00f3n real. He creado un ejemplo en ASP.NET que demuestra c\u00f3mo usar el SDK .NET de Couchbase para realizar una b\u00fasqueda de texto completo. Para este ejemplo, asumo que te sientes c\u00f3modo con ASP.NET MVC y con los fundamentos de la integraci\u00f3n de ASP.NET con Couchbase. Si ese no es el caso, te recomiendo que revises la secci\u00f3n <a>Ejemplo de \"Hola Mundo\" de ASP.NET sobre el que escrib\u00ed anteriormente en el blog<\/a>.<\/p>\n<p>He creado dos acciones: \u00cdndice y B\u00fasqueda. La acci\u00f3n Index muestra una vista que permite al usuario escribir una cadena de b\u00fasqueda. Aqu\u00ed est\u00e1 el controlador y la acci\u00f3n:<\/p>\n<pre><code>public class HomeController : Controller\r\n{\r\n    private readonly IBucket _bucket;\r\n\r\n    public HomeController(IBucket bucket)\r\n    {\r\n        _bucket = bucket;\r\n    }\r\n\r\n    public ViewResult Index()\r\n    {\r\n        return View();\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>Y aqu\u00ed est\u00e1 la vista en Index.cshtml:<\/p>\n<pre><code>\r\n<h1>Buscar en<\/h1>\r\n@using (Html.BeginForm(\"Search\", \"Home\"))\r\n    {\r\n        @Html.TextBox(\"q\",\"\")\r\n        \r\n    }\r\n<\/code><\/pre>\n<p>No es bonito, pero es funcional. A continuaci\u00f3n, he creado una acci\u00f3n de b\u00fasqueda. Esta acci\u00f3n tomar\u00e1 la consulta de b\u00fasqueda y mostrar\u00e1 los resultados de Couchbase. Los resultados ser\u00e1n muy similares a los que vimos en la consola de Couchbase: ID del documento, puntuaci\u00f3n de relevancia y fragmentos resaltados.<\/p>\n<p>Hay tres pasos para ejecutar una b\u00fasqueda de texto completo:<\/p>\n<ol>\n<li>Instanciar alg\u00fan objeto que implemente <code>ISearchQuery<\/code>. Hay muchas opciones; yo utilizo <code>MatchQuery<\/code> para este ejemplo.<\/li>\n<li>Instanciar un objeto SearchParams para especificar las opciones de b\u00fasqueda.<\/li>\n<li>Utilice un <code>IBucket<\/code> para ejecutar la consulta+par\u00e1metros y obtener resultados.<\/li>\n<\/ol>\n<p>En este ejemplo, he realizado los tres pasos directamente en la acci\u00f3n Buscar:<\/p>\n<pre><code>public ActionResult Search(string q)\r\n{\r\n    if (string.IsNullOrEmpty(q))\r\n        return View(\"Index\");\r\n\r\n    var query = new MatchQuery(q);\r\n    var searchParams = new SearchParams()\r\n        .Limit(10)\r\n        .Timeout(TimeSpan.FromMilliseconds(10000))\r\n        .Highlighting(HighLightStyle.Html);\r\n    var results = _bucket.Query(\"travel-sample-idx\", query, searchParams);\r\n\r\n    var searchResultsModel = new SearchResultsModel(q, results);\r\n\r\n    return View(searchResultsModel);\r\n}\r\n<\/code><\/pre>\n<p>Algunas notas sobre los SearchParams:<\/p>\n<ul>\n<li>Lo limito a los 10 primeros. Tambi\u00e9n hay un m\u00e9todo Skip() que puedes usar para paginar.<\/li>\n<li>Estoy estableciendo un tiempo de espera de 10000ms. Si creo el \u00edndice correctamente, los resultados ser\u00e1n devueltos muy r\u00e1pidamente, pero si jugueteo con el \u00edndice y algo va mal, quiero que la b\u00fasqueda falle r\u00e1pidamente.<\/li>\n<li>Estoy configurando el estilo de resaltado como HTML. Esto pondr\u00e1 el <code><mark><\/mark><\/code> alrededor de los t\u00e9rminos de b\u00fasqueda resaltados en los resultados de los fragmentos.<\/li>\n<\/ul>\n<p>Tambi\u00e9n he creado un <code>SearchResultsModel<\/code> modelo de vista. Esto hace el mapeo que necesito para obtener el ID del documento, puntuaci\u00f3n, fragmentos de los resultados de b\u00fasqueda (as\u00ed como las palabras clave que el usuario escribi\u00f3).<\/p>\n<pre><code>public class SearchResultsModel\r\n{\r\n    public List Results { get; private set; }\r\n    public string Keywords { get; private set; }\r\n\r\n    public SearchResultsModel(string keywords, ISearchQueryResult results = null)\r\n    {\r\n        Keywords = keywords;\r\n        Results = results == null\r\n            ? new List() \r\n            : results.Hits.Select(r =&gt; new SearchResultModel(r)).ToList();\r\n    }\r\n\r\n}\r\n\r\npublic class SearchResultModel\r\n{\r\n    public string DocumentId { get; private set; }\r\n    public double Score { get; private set; }\r\n    public List Fragments { get; set; }\r\n\r\n    public SearchResultModel(ISearchQueryRow searchQueryRow)\r\n    {\r\n        DocumentId = searchQueryRow.Id;\r\n        Score = searchQueryRow.Score;\r\n        Fragments = searchQueryRow.Fragments.SelectMany(f =&gt; f.Value).ToList();\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>Por \u00faltimo, aqu\u00ed est\u00e1 la vista Search.cshtml:<\/p>\n<pre><code>@model FullTextSearchExample.Models.SearchResultsModel\r\n<h1>Buscar en<\/h1>\r\n@using (Html.BeginForm(\"Search\", \"Home\"))\r\n{\r\n    @Html.TextBox(\"q\", Model.Keywords)\r\n    \r\n}\r\n\r\n@if (!Model.Results.Any())\r\n{\r\n    No results found\r\n}\r\nelse\r\n{\r\n    foreach (var result in Model.Results)\r\n    {\r\n\t<h2>Document: @result.DocumentId<\/h2>\r\n\t<h3>Score: @result.Score<\/h3>\r\n\tforeach (var fragment in result.Fragments)\r\n              {\r\n\t\t@Html.Raw(fragment)\r\n\t      }\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>No es una p\u00e1gina HTML muy bonita, pero es funcional. Esto es lo que parece en acci\u00f3n:<\/p>\n<p><img decoding=\"async\" src=\"\/wp-content\/original-assets\/2016\/may\/full-text-search-in-.net-with-couchbase-4.5\/fulltextsearchresultsaspnet_009.png\" alt=\"Full Text Search results in ASP.NET\" \/><\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>Recuerda que esta caracter\u00edstica es s\u00f3lo una vista previa para desarrolladores: a\u00fan no est\u00e1 soportada y a\u00fan no se recomienda para producci\u00f3n. Pero la b\u00fasqueda de texto completo est\u00e1 llegando a Couchbase. De hecho, puedes opinar sobre c\u00f3mo se implementar\u00e1 esta funci\u00f3n. Echa un vistazo a la <a href=\"https:\/\/github.com\/couchbaselabs\/sdk-rfcs\/pull\/30\">B\u00fasqueda de texto completo RFC en GitHub<\/a>y no dude en hacer preguntas o dejar comentarios.<\/p>\n<p>\u00bfA\u00fan tiene preguntas? \u00bfNecesitas ayuda? D\u00e9janos un comentario, <a href=\"https:\/\/twitter.com\/mgroves\">ping me on Twitter<\/a>o env\u00edeme un correo electr\u00f3nico (matthew.groves AT couchbase DOT com).<\/p>","protected":false},"excerpt":{"rendered":"<p>Full Text Search (or FTS) is a new feature that is being released as a developer preview in Couchbase 4.5. It is not meant for production, and is not yet supported, but it is a glimpse at things to come. [&hellip;]<\/p>","protected":false},"author":71,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1811,10126,1816,2165],"tags":[],"ppma_author":[8937],"class_list":["post-2269","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-asp-dotnet","category-couchbase-server","category-full-text-search"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.2 (Yoast SEO v26.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Full Text Search in .NET with Couchbase 4.5 - The Couchbase Blog<\/title>\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\/full-text-search-in-net-with-couchbase-4-5\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Full Text Search in .NET with Couchbase 4.5\" \/>\n<meta property=\"og:description\" content=\"Full Text Search (or FTS) is a new feature that is being released as a developer preview in Couchbase 4.5. It is not meant for production, and is not yet supported, but it is a glimpse at things to come. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/full-text-search-in-net-with-couchbase-4-5\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-05-19T14:04:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-09T14:13:58+00:00\" \/>\n<meta name=\"author\" content=\"Matthew Groves\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@mgroves\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthew Groves\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/full-text-search-in-net-with-couchbase-4-5\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/full-text-search-in-net-with-couchbase-4-5\/\"},\"author\":{\"name\":\"Matthew Groves\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\"},\"headline\":\"Full Text Search in .NET with Couchbase 4.5\",\"datePublished\":\"2016-05-19T14:04:20+00:00\",\"dateModified\":\"2025-10-09T14:13:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/full-text-search-in-net-with-couchbase-4-5\/\"},\"wordCount\":1219,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/full-text-search-in-net-with-couchbase-4-5\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\".NET\",\"ASP.NET\",\"Couchbase Server\",\"Full-Text Search\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/full-text-search-in-net-with-couchbase-4-5\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/full-text-search-in-net-with-couchbase-4-5\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/full-text-search-in-net-with-couchbase-4-5\/\",\"name\":\"Full Text Search in .NET with Couchbase 4.5 - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/full-text-search-in-net-with-couchbase-4-5\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/full-text-search-in-net-with-couchbase-4-5\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2016-05-19T14:04:20+00:00\",\"dateModified\":\"2025-10-09T14:13:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/full-text-search-in-net-with-couchbase-4-5\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/full-text-search-in-net-with-couchbase-4-5\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/full-text-search-in-net-with-couchbase-4-5\/#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\/full-text-search-in-net-with-couchbase-4-5\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Full Text Search in .NET with Couchbase 4.5\"}]},{\"@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\/3929663e372020321b0152dc4fa65a58\",\"name\":\"Matthew Groves\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"caption\":\"Matthew Groves\"},\"description\":\"Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.\",\"sameAs\":[\"https:\/\/crosscuttingconcerns.com\",\"https:\/\/x.com\/mgroves\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/matthew-groves\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Full Text Search in .NET with Couchbase 4.5 - The Couchbase Blog","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\/full-text-search-in-net-with-couchbase-4-5\/","og_locale":"es_MX","og_type":"article","og_title":"Full Text Search in .NET with Couchbase 4.5","og_description":"Full Text Search (or FTS) is a new feature that is being released as a developer preview in Couchbase 4.5. It is not meant for production, and is not yet supported, but it is a glimpse at things to come. [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/full-text-search-in-net-with-couchbase-4-5\/","og_site_name":"The Couchbase Blog","article_published_time":"2016-05-19T14:04:20+00:00","article_modified_time":"2025-10-09T14:13:58+00:00","author":"Matthew Groves","twitter_card":"summary_large_image","twitter_creator":"@mgroves","twitter_misc":{"Written by":"Matthew Groves","Est. reading time":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/full-text-search-in-net-with-couchbase-4-5\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/full-text-search-in-net-with-couchbase-4-5\/"},"author":{"name":"Matthew Groves","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58"},"headline":"Full Text Search in .NET with Couchbase 4.5","datePublished":"2016-05-19T14:04:20+00:00","dateModified":"2025-10-09T14:13:58+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/full-text-search-in-net-with-couchbase-4-5\/"},"wordCount":1219,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/full-text-search-in-net-with-couchbase-4-5\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":[".NET","ASP.NET","Couchbase Server","Full-Text Search"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/full-text-search-in-net-with-couchbase-4-5\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/full-text-search-in-net-with-couchbase-4-5\/","url":"https:\/\/www.couchbase.com\/blog\/full-text-search-in-net-with-couchbase-4-5\/","name":"Full Text Search in .NET with Couchbase 4.5 - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/full-text-search-in-net-with-couchbase-4-5\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/full-text-search-in-net-with-couchbase-4-5\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2016-05-19T14:04:20+00:00","dateModified":"2025-10-09T14:13:58+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/full-text-search-in-net-with-couchbase-4-5\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/full-text-search-in-net-with-couchbase-4-5\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/full-text-search-in-net-with-couchbase-4-5\/#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\/full-text-search-in-net-with-couchbase-4-5\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Full Text Search in .NET with Couchbase 4.5"}]},{"@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\/3929663e372020321b0152dc4fa65a58","name":"Matthew Groves","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54","url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","caption":"Matthew Groves"},"description":"A Matthew D. Groves le encanta programar. No importa si se trata de C#, jQuery o PHP: enviar\u00e1 pull requests para cualquier cosa. Lleva codificando profesionalmente desde que escribi\u00f3 una aplicaci\u00f3n de punto de venta en QuickBASIC para la pizzer\u00eda de sus padres, all\u00e1 por los a\u00f1os noventa. Actualmente trabaja como Director de Marketing de Producto para Couchbase. Su tiempo libre lo pasa con su familia, viendo a los Reds y participando en la comunidad de desarrolladores. Es autor de AOP in .NET, Pro Microservices in .NET, autor de Pluralsight y MVP de Microsoft.","sameAs":["https:\/\/crosscuttingconcerns.com","https:\/\/x.com\/mgroves"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/matthew-groves\/"}]}},"authors":[{"term_id":8937,"user_id":71,"is_guest":0,"slug":"matthew-groves","display_name":"Matthew Groves","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","author_category":"","last_name":"Groves","first_name":"Matthew","job_title":"","user_url":"https:\/\/crosscuttingconcerns.com","description":"A Matthew D. Groves le encanta programar.  No importa si se trata de C#, jQuery o PHP: enviar\u00e1 pull requests para cualquier cosa.  Lleva codificando profesionalmente desde que escribi\u00f3 una aplicaci\u00f3n de punto de venta en QuickBASIC para la pizzer\u00eda de sus padres, all\u00e1 por los a\u00f1os noventa.  Actualmente trabaja como Director de Marketing de Producto para Couchbase. Su tiempo libre lo pasa con su familia, viendo a los Reds y participando en la comunidad de desarrolladores.  Es autor de AOP in .NET, Pro Microservices in .NET, autor de Pluralsight y MVP de Microsoft."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2269","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\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=2269"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2269\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=2269"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=2269"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=2269"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=2269"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}