{"id":2506,"date":"2017-01-20T13:04:50","date_gmt":"2017-01-20T13:04:50","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2506"},"modified":"2025-06-13T20:59:35","modified_gmt":"2025-06-14T03:59:35","slug":"couchbase-developer-release-new-fts","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-developer-release-new-fts\/","title":{"rendered":"Vers\u00e3o para desenvolvedores do Couchbase - O que h\u00e1 de novo para o FTS?"},"content":{"rendered":"<p>O Couchbase FTS \u00e9 nosso novo mecanismo de consulta e \u00edndice de texto completo. N\u00f3s o apresentamos anteriormente no ano passado. Convido voc\u00ea a ler <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-4.5-developer-preview-couchbase-fts\/\">esta postagem<\/a> e o <a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/fts\/full-text-intro.html\">documenta\u00e7\u00e3o de refer\u00eancia<\/a> para entender melhor o que ele pode fazer por voc\u00ea.<\/p>\n<p>Se voc\u00ea ainda est\u00e1 aqui, ou talvez tenha voltado, veja o que h\u00e1 de novo para o FTS nesta vers\u00e3o para desenvolvedores do Couchbase.<\/p>\n<h2>Mapeamento de tipos<\/h2>\n<p>No passado, havia apenas uma maneira de declarar um mapeamento de tipo, que era informar ao FTS qual campo (por padr\u00e3o, o campo \"type\") voc\u00ea deseja usar para distinguir os tipos de documentos. Embora usar um campo comum como seletor de tipo para todos os seus documentos seja \u00fatil e uma pr\u00e1tica comum, essa n\u00e3o \u00e9 a \u00fanica. Portanto, adicionamos outra maneira de distinguir tipos entre documentos.<\/p>\n<ul>\n<li>ID do DOC at\u00e9 o separador: O identificador de tipo \u00e9 o prefixo da chave do documento, at\u00e9 o caractere fornecido, mas n\u00e3o o inclui.<\/li>\n<li>ID do DOC com regex: Para usu\u00e1rios avan\u00e7ados, \u00e9 poss\u00edvel especificar uma express\u00e3o regular que corresponda ao identificador de tipo.<\/li>\n<\/ul>\n<p>Como isso se traduz em nossa amostra de viagem? Todas as chaves dos documentos t\u00eam o mesmo padr\u00e3o. Aqui est\u00e3o alguns exemplos:<\/p>\n<p>airline_10, airline_10748, hotel_6445, hotel_9905, landmark_10019, landmark_9838, route_10009, route_14273, route_9807<\/p>\n<p>Como voc\u00ea pode ver, todos eles come\u00e7am com um tipo, depois um sublinhado e depois um n\u00famero. Se usarmos o sublinhado como separador, todos eles come\u00e7ar\u00e3o com o tipo String, depois o sublinhado e o n\u00famero. Portanto, podemos usar a op\u00e7\u00e3o DOC ID at\u00e9 o separador, definindo a op\u00e7\u00e3o como '_'. Isso ser\u00e1 equivalente a dizer que o campo que cont\u00e9m o tipo do documento \u00e9 'type'. Que \u00e9 exatamente o que usamos para fazer.<\/p>\n<p>Agora podemos identificar outro padr\u00e3o aqui. Todas as IDs de DOC come\u00e7am com letras min\u00fasculas at\u00e9 o caractere de sublinhado. Seu comprimento \u00e9 de 5 a 8 caracteres. Em seguida, temos n\u00fameros. Podemos traduzir essa observa\u00e7\u00e3o na seguinte express\u00e3o regular: <code>^[a-z]{5,8}<\/code><\/p>\n<p>Essa express\u00e3o corresponder\u00e1 ao in\u00edcio da cadeia de caracteres (gra\u00e7as a ^), a todos os caracteres entre 'a' e 'z' (gra\u00e7as a [a-z]) com um comprimento que vai de 5 a 8 (gra\u00e7as a {5,8}).<br \/>\nPortanto, voc\u00ea pode usar a op\u00e7\u00e3o DOC ID com regex definindo a op\u00e7\u00e3o como <code>^[a-z]{5,8}<\/code>. Regex \u00e0s vezes s\u00e3o complicados, mas permitem que voc\u00ea fa\u00e7a filtragens mais avan\u00e7adas.<\/p>\n<h2>Classificar<\/h2>\n<p>Outro novo recurso desta vers\u00e3o \u00e9 o Sort. E voc\u00ea vai dizer que o Sort j\u00e1 estava dispon\u00edvel na vers\u00e3o anterior. E voc\u00ea est\u00e1 certo. Todos os documentos que correspondem \u00e0 pesquisa t\u00eam uma pontua\u00e7\u00e3o de relev\u00e2ncia e os resultados s\u00e3o sempre classificados por pontua\u00e7\u00e3o decrescente. No entanto, agora voc\u00ea pode especificar sua pr\u00f3pria ordem de classifica\u00e7\u00e3o. Adicionamos um campo de classifica\u00e7\u00e3o para a consulta FTS que funciona da seguinte forma:<\/p>\n<p><code>\"sort\" : [ \"country\", \"state\", \"city\", \"-score\" ]<\/code><\/p>\n<p>Aqui, os resultados ser\u00e3o classificados primeiro por pa\u00eds, depois por estado e cidade se o pa\u00eds, o estado e a cidade forem semelhantes. Em seguida, se todos forem iguais, ser\u00e3o classificados de forma decrescente por pontua\u00e7\u00e3o. Prefixe os campos de classifica\u00e7\u00e3o com o caractere \"-\" para que a classifica\u00e7\u00e3o seja descendente. Voc\u00ea tamb\u00e9m precisa se certificar de que todos os campos da matriz de classifica\u00e7\u00e3o estejam armazenados no \u00edndice. Esta \u00e9 a apar\u00eancia de uma consulta completa do FTS:<\/p>\n<p><code>{ \"explain\": false, \"fields\": [ \"title\" ], \"highlight\": {}, \"sort\": [\"country\", \"state\", \"city\", \"-score\", \"-_id\"], \"query\":{ \"query\": \"beautiful pool\" } }<\/code><\/p>\n<p>Se voc\u00ea estiver usando Java, digamos que o <a href=\"https:\/\/github.com\/couchbaselabs\/try-cb-java\/\">aplicativo de amostra de viagem<\/a> por exemplo, \u00e9 f\u00e1cil adicionar o Sort personalizado. Basta abrir o servi\u00e7o Hotel e acessar o m\u00e9todo findHotels. Ele deve ter a seguinte apar\u00eancia:<\/p>\n<pre><code>    ConjunctionQuery fts = SearchQuery.conjuncts(SearchQuery.term(\"hotel\").field(\"type\"));\r\n\r\n    if (location != null &amp;&amp; !location.isEmpty() &amp;&amp; !\"*\".equals(location)) {\r\n        fts.and(SearchQuery.disjuncts(\r\n                    SearchQuery.matchPhrase(location).field(\"country\"),\r\n                    SearchQuery.matchPhrase(location).field(\"city\"),\r\n                    SearchQuery.matchPhrase(location).field(\"state\"),\r\n                    SearchQuery.matchPhrase(location).field(\"address\")\r\n            ));\r\n    }\r\n\r\n    if (description != null &amp;&amp; !description.isEmpty() &amp;&amp; !\"*\".equals(description)) {\r\n        fts.and(\r\n            SearchQuery.disjuncts(\r\n                    SearchQuery.matchPhrase(description).field(\"description\"),\r\n                    SearchQuery.matchPhrase(description).field(\"name\")\r\n            ));\r\n    }\r\n\r\n    SearchQuery query = new SearchQuery(\"hotels\", fts)\r\n            .limit(100);\r\n\r\n    logQuery(query.export().toString());\r\n    SearchQueryResult result = bucket.query(query);\r\n<\/code><\/pre>\n<p>A consulta a ser executada \u00e9 basicamente esta linha de c\u00f3digo: <code>SearchQuery query = new SearchQuery(\"hotels\", fts).limit(100);<\/code><br \/>\nE tudo o que voc\u00ea precisa fazer \u00e9 anexar uma chamada ao m\u00e9todo de classifica\u00e7\u00e3o: <code>SearchQuery query = new SearchQuery(\"hotels\", fts).limit(100).sort(\"country\", \"state\", \"city\", \"-score\")<\/code><\/p>\n<p>Op\u00e7\u00f5es mais avan\u00e7adas tamb\u00e9m est\u00e3o dispon\u00edveis.<\/p>\n<h2>Backend<\/h2>\n<p>Algo que mudou, mas n\u00e3o ser\u00e1 vis\u00edvel para o usu\u00e1rio final, \u00e9 que alteramos o backend dos \u00edndices do FTS. Deixamos de usar o ForestDB e passamos a usar o <a href=\"https:\/\/github.com\/couchbase\/moss\">Musgo<\/a>. o moss \u00e9 uma biblioteca de armazenamento de chave-valor simples, r\u00e1pida, ordenada e persistente para golang. significa \"memory-oriented sorted segments\". Aqui est\u00e1 a lista de recursos extra\u00edda do LEIAME:<\/p>\n<ul>\n<li>API de coleta de chave-vale ordenada<\/li>\n<li>100% go implementation<\/li>\n<li>iteradores de intervalo de chaves<\/li>\n<li>Os snapshots permitem leituras isoladas<\/li>\n<li>muta\u00e7\u00f5es at\u00f4micas por meio de uma API em lote<\/li>\n<li>as opera\u00e7\u00f5es de mesclagem permitem otimiza\u00e7\u00f5es de leitura-computa\u00e7\u00e3o-grava\u00e7\u00e3o para casos de uso de grava\u00e7\u00e3o pesada (por exemplo, atualiza\u00e7\u00e3o de contadores)<\/li>\n<li>leitores e escritores concorrentes n\u00e3o se bloqueiam mutuamente<\/li>\n<li>APIs avan\u00e7adas e opcionais para evitar c\u00f3pias extras de mem\u00f3ria<\/li>\n<li>implementa\u00e7\u00e3o opcional de armazenamento de n\u00edvel inferior, denominada \"mossStore\", que usa um design append-only para grava\u00e7\u00f5es e mmap() para leituras, com pol\u00edtica de compacta\u00e7\u00e3o configur\u00e1vel; consulte: OpenStoreCollection()<\/li>\n<li>O mossStore suporta a navega\u00e7\u00e3o para tr\u00e1s atrav\u00e9s de pontos de confirma\u00e7\u00e3o anteriores em modo somente leitura e suporta a revers\u00e3o para pontos de confirma\u00e7\u00e3o anteriores.<\/li>\n<li>ganchos de persist\u00eancia opcionais para permitir o armazenamento em cache de write-back em uma implementa\u00e7\u00e3o de armazenamento de n\u00edvel inferior que os usu\u00e1rios avan\u00e7ados podem desejar fornecer (por exemplo, voc\u00ea pode conectar o moss ao leveldb, sqlite etc.)<\/li>\n<li>as chamadas de retorno de eventos permitem o monitoramento de tarefas ass\u00edncronas<\/li>\n<li>testes unit\u00e1rios<\/li>\n<li>testes de fuzz via go-fuzz e smat (<a href=\"https:\/\/github.com\/mschoch\/smat\">github.com\/mschoch\/smat<\/a>); veja <a href=\"https:\/\/README-smat.md\">README-smat.md<\/a><\/li>\n<\/ul>\n<p>N\u00e3o entrarei em detalhes, pois isso \u00e9 de n\u00edvel bastante baixo. No entanto, gostar\u00edamos de saber se voc\u00ea busca mais informa\u00e7\u00f5es sobre coisas arquitet\u00f4nicas de baixo n\u00edvel como essa. Voc\u00ea gostaria de ver uma apresenta\u00e7\u00e3o mais detalhada do moss ou de qualquer outro componente do Couchbase Server? Em caso afirmativo, fale com voc\u00ea no Twitter ou nos coment\u00e1rios abaixo.<\/p>","protected":false},"excerpt":{"rendered":"<p>Couchbase FTS is our new Fulltext Index and Query engine. We previously introduced it last year, I invite you to read this post and the reference documentation for a better understanding of what it can do for you. If you [&hellip;]<\/p>","protected":false},"author":49,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816,2165],"tags":[],"ppma_author":[9023],"class_list":["post-2506","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","category-full-text-search"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Couchbase Developer Release - What\u2019s new for FTS?<\/title>\n<meta name=\"description\" content=\"Learn more about what is new for FTS in this Couchbase 4.5 Developer Preview Release. Check the new features include Type Mapping, Sort, and Backend.\" \/>\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\/pt\/couchbase-developer-release-new-fts\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase Developer Release - What\u2019s new for FTS?\" \/>\n<meta property=\"og:description\" content=\"Learn more about what is new for FTS in this Couchbase 4.5 Developer Preview Release. Check the new features include Type Mapping, Sort, and Backend.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-developer-release-new-fts\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-20T13:04:50+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T03:59:35+00:00\" \/>\n<meta name=\"author\" content=\"Laurent Doguin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ldoguin\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"unstructured.io\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-developer-release-new-fts\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-developer-release-new-fts\/\"},\"author\":{\"name\":\"Laurent Doguin\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c0aa9b8f1ed51b7a9e2f7cb755994a5e\"},\"headline\":\"Couchbase Developer Release &#8211; What\u2019s new for FTS?\",\"datePublished\":\"2017-01-20T13:04:50+00:00\",\"dateModified\":\"2025-06-14T03:59:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-developer-release-new-fts\/\"},\"wordCount\":861,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-developer-release-new-fts\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Couchbase Server\",\"Full-Text Search\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-developer-release-new-fts\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-developer-release-new-fts\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/couchbase-developer-release-new-fts\/\",\"name\":\"Couchbase Developer Release - What\u2019s new for FTS?\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-developer-release-new-fts\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-developer-release-new-fts\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-01-20T13:04:50+00:00\",\"dateModified\":\"2025-06-14T03:59:35+00:00\",\"description\":\"Learn more about what is new for FTS in this Couchbase 4.5 Developer Preview Release. Check the new features include Type Mapping, Sort, and Backend.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-developer-release-new-fts\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-developer-release-new-fts\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-developer-release-new-fts\/#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\/couchbase-developer-release-new-fts\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbase Developer Release &#8211; What\u2019s new for FTS?\"}]},{\"@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\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\/c0aa9b8f1ed51b7a9e2f7cb755994a5e\",\"name\":\"Laurent Doguin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/12929ce99397769f362b7a90d6b85071\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g\",\"caption\":\"Laurent Doguin\"},\"description\":\"Laurent is a nerdy metal head who lives in Paris. He mostly writes code in Java and structured text in AsciiDoc, and often talks about data, reactive programming and other buzzwordy stuff. He is also a former Developer Advocate for Clever Cloud and Nuxeo where he devoted his time and expertise to helping those communities grow bigger and stronger. He now runs Developer Relations at Couchbase.\",\"sameAs\":[\"https:\/\/x.com\/ldoguin\"],\"honorificPrefix\":\"Mr\",\"birthDate\":\"1985-06-07\",\"gender\":\"male\",\"award\":[\"Devoxx Champion\",\"Couchbase Legend\"],\"knowsAbout\":[\"Java\"],\"knowsLanguage\":[\"English\",\"French\"],\"jobTitle\":\"Director Developer Relation & Strategy\",\"worksFor\":\"Couchbase\",\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/laurent-doguin\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Couchbase Developer Release - What\u2019s new for FTS?","description":"Learn more about what is new for FTS in this Couchbase 4.5 Developer Preview Release. Check the new features include Type Mapping, Sort, and Backend.","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\/pt\/couchbase-developer-release-new-fts\/","og_locale":"pt_BR","og_type":"article","og_title":"Couchbase Developer Release - What\u2019s new for FTS?","og_description":"Learn more about what is new for FTS in this Couchbase 4.5 Developer Preview Release. Check the new features include Type Mapping, Sort, and Backend.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-developer-release-new-fts\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-01-20T13:04:50+00:00","article_modified_time":"2025-06-14T03:59:35+00:00","author":"Laurent Doguin","twitter_card":"summary_large_image","twitter_creator":"@ldoguin","twitter_misc":{"Written by":"unstructured.io","Est. reading time":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-developer-release-new-fts\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-developer-release-new-fts\/"},"author":{"name":"Laurent Doguin","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c0aa9b8f1ed51b7a9e2f7cb755994a5e"},"headline":"Couchbase Developer Release &#8211; What\u2019s new for FTS?","datePublished":"2017-01-20T13:04:50+00:00","dateModified":"2025-06-14T03:59:35+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-developer-release-new-fts\/"},"wordCount":861,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-developer-release-new-fts\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Couchbase Server","Full-Text Search"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-developer-release-new-fts\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-developer-release-new-fts\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-developer-release-new-fts\/","name":"Couchbase Developer Release - What\u2019s new for FTS?","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-developer-release-new-fts\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-developer-release-new-fts\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-01-20T13:04:50+00:00","dateModified":"2025-06-14T03:59:35+00:00","description":"Learn more about what is new for FTS in this Couchbase 4.5 Developer Preview Release. Check the new features include Type Mapping, Sort, and Backend.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-developer-release-new-fts\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-developer-release-new-fts\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-developer-release-new-fts\/#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\/couchbase-developer-release-new-fts\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbase Developer Release &#8211; What\u2019s new for FTS?"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados 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":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@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\/c0aa9b8f1ed51b7a9e2f7cb755994a5e","name":"Laurent Doguin","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/12929ce99397769f362b7a90d6b85071","url":"https:\/\/secure.gravatar.com\/avatar\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g","caption":"Laurent Doguin"},"description":"Laurent \u00e9 um nerd metaleiro que mora em Paris. Em sua maior parte, ele escreve c\u00f3digo em Java e texto estruturado em AsciiDoc, e frequentemente fala sobre dados, programa\u00e7\u00e3o reativa e outras coisas que est\u00e3o na moda. Ele tamb\u00e9m foi Developer Advocate do Clever Cloud e do Nuxeo, onde dedicou seu tempo e experi\u00eancia para ajudar essas comunidades a crescerem e se fortalecerem. Atualmente, ele dirige as Rela\u00e7\u00f5es com Desenvolvedores na Couchbase.","sameAs":["https:\/\/x.com\/ldoguin"],"honorificPrefix":"Mr","birthDate":"1985-06-07","gender":"male","award":["Devoxx Champion","Couchbase Legend"],"knowsAbout":["Java"],"knowsLanguage":["English","French"],"jobTitle":"Director Developer Relation & Strategy","worksFor":"Couchbase","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/laurent-doguin\/"}]}},"authors":[{"term_id":9023,"user_id":49,"is_guest":0,"slug":"laurent-doguin","display_name":"Laurent Doguin","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/b8c466908092b46634af916b6921f30187a051e4367ded7ac9b1a3f2c5692fd2?s=96&d=mm&r=g","author_category":"","last_name":"Doguin","first_name":"Laurent","job_title":"","user_url":"","description":"Laurent \u00e9 um nerd metaleiro que mora em Paris. Em sua maior parte, ele escreve c\u00f3digo em Java e texto estruturado em AsciiDoc, e frequentemente fala sobre dados, programa\u00e7\u00e3o reativa e outras coisas que est\u00e3o na moda. Ele tamb\u00e9m foi Developer Advocate do Clever Cloud e do Nuxeo, onde dedicou seu tempo e experi\u00eancia para ajudar essas comunidades a crescerem e se fortalecerem. Atualmente, ele dirige as Rela\u00e7\u00f5es com Desenvolvedores na Couchbase."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2506","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/49"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=2506"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2506\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=2506"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=2506"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=2506"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=2506"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}