{"id":7153,"date":"2019-07-03T18:54:18","date_gmt":"2019-07-04T01:54:18","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=7153"},"modified":"2021-07-13T00:46:05","modified_gmt":"2021-07-13T07:46:05","slug":"a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/","title":{"rendered":"Uma vis\u00e3o geral dos aprimoramentos de desempenho do FTS na vers\u00e3o 6.5.0 - Parte 1"},"content":{"rendered":"<p><span style=\"font-weight: 400\">Ever since the nimbler, refined `<\/span><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/scorch-index-type-why-does-it-matter\/\"><span style=\"font-weight: 400\">queimar<\/span><\/a><span style=\"font-weight: 400\">` indexing format released in Couchbase 6.0.0, the FTS team has been pretty excited about the future optimisation potential unlocked with the newer indexing scheme. With the 6.5.0 release, we have essentially embarked on a never ending journey of optimising and tuning the performance of the Full Text Search engine.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Deixe-me compartilhar algumas informa\u00e7\u00f5es sobre as otimiza\u00e7\u00f5es interessantes que estamos introduzindo na pr\u00f3xima vers\u00e3o 6.5.0.\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n<h4><b>Consultas geogr\u00e1ficas <\/b><\/h4>\n<p><span style=\"font-weight: 400\">O FTS oferece suporte a dois tipos de consultas geogr\u00e1ficas <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/fts\/fts-geospatial-queries.html\"><span style=\"font-weight: 400\">Dist\u00e2ncia de pontos e ret\u00e2ngulo delimitado<\/span><\/a><span style=\"font-weight: 400\">. Desde o in\u00edcio do recurso, n\u00e3o tivemos a chance de revisar e aprimorar esse recurso, embora fosse quase certo que a implementa\u00e7\u00e3o da consulta precisasse de melhorias em termos de utiliza\u00e7\u00e3o da mem\u00f3ria e da CPU. A boa not\u00edcia \u00e9 que, de todos os aprimoramentos de desempenho futuros na vers\u00e3o 6.5.0, vimos os maiores ganhos com as altera\u00e7\u00f5es geogr\u00e1ficas.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h5><b>Oportunidade<\/b><\/h5>\n<p><span style=\"font-weight: 400\">Como parte da an\u00e1lise do alto uso de mem\u00f3ria pelas consultas geogr\u00e1ficas, ficou claro que h\u00e1 um enorme potencial de ajuste de desempenho que ainda n\u00e3o foi explorado. No caso dos tipos de consulta de dist\u00e2ncia de ponto e ret\u00e2ngulo delimitado, o mecanismo de indexa\u00e7\u00e3o (<\/span><a href=\"https:\/\/github.com\/blevesearch\/bleve\"><span style=\"font-weight: 400\">sangrar<\/span><\/a><span style=\"font-weight: 400\">) precisa descobrir o intervalo de pontos geogr\u00e1ficos a serem pesquisados (termos candidatos) que qualificam os crit\u00e9rios de pesquisa a partir dos par\u00e2metros de consulta fornecidos. O Bleve deriva esses termos geogr\u00e1ficos candidatos por meio de determinadas etapas matem\u00e1ticas.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Mas ele n\u00e3o estava fazendo nenhuma filtragem dos termos geogr\u00e1ficos candidatos gerados matematicamente. Em outras palavras, uma amplifica\u00e7\u00e3o n\u00e3o intencional do espa\u00e7o de pesquisa estava ocorrendo em segundo plano. E isso estava desencadeando a cria\u00e7\u00e3o de muitos iteradores de pesquisa de termos desnecess\u00e1rios ou irrelevantes (por exemplo, termos que nem sequer existem no \u00edndice), o que leva a muitos objetos tempor\u00e1rios internos para gerenciar e, al\u00e9m disso, adiciona uma grande sobrecarga ao coletor de lixo.\u00a0<\/span><\/p>\n<h5><b>Resposta<\/b><\/h5>\n<p><span style=\"font-weight: 400\">Otimizamos esse caso aplicando uma filtragem de termos geogr\u00e1ficos que basicamente valida os pontos geogr\u00e1ficos gerados matematicamente quanto \u00e0 sua exist\u00eancia no dicion\u00e1rio de termos e os qualifica somente se estiverem presentes no dicion\u00e1rio de termos. Essa abordagem reduziu significativamente o n\u00famero de pontos geogr\u00e1ficos\/termos candidatos que est\u00e3o sendo pesquisados no \u00edndice invertido e, portanto, melhorou os n\u00fameros de lat\u00eancia e taxa de transfer\u00eancia para consultas geogr\u00e1ficas.<\/span><\/p>\n<h5><b>Recompensa<\/b><\/h5>\n<p><span style=\"font-weight: 400\">Isso resultou em uma melhoria de at\u00e9 <\/span><b>6X<\/b><span style=\"font-weight: 400\"> redu\u00e7\u00e3o de lat\u00eancia para consultas geogr\u00e1ficas em nossos benchmarks internos.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h4><b>Consultas difusas <\/b><\/h4>\n<p><span style=\"font-weight: 400\">Em pr\u00e9 <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/scorch-index-type-why-does-it-matter\/\"><span style=\"font-weight: 400\">queimar<\/span><\/a><span style=\"font-weight: 400\"> dias, quando um <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/fts\/fts-query-types.html#fuzzy-query\"><span style=\"font-weight: 400\">fuzzy\/edit-distance<\/span><\/a><span style=\"font-weight: 400\"> Quando a consulta \u00e9 recebida, o mecanismo de indexa\u00e7\u00e3o examina todos os termos indexados em rela\u00e7\u00e3o ao campo determinado na consulta para calcular a dist\u00e2ncia de edi\u00e7\u00e3o e descobrir se o termo atual est\u00e1 dentro da dist\u00e2ncia de edi\u00e7\u00e3o solicitada com o termo da consulta. E se ele se qualificar para esse crit\u00e9rio de dist\u00e2ncia de edi\u00e7\u00e3o, ele procurar\u00e1 o termo no \u00edndice invertido para buscar a lista de documentos em que o termo aparece e os detalhes necess\u00e1rios, conforme exigido pela consulta. (vetores de termos, valores de documentos <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/6.0\/fts\/fts-creating-indexes.html#inserting-a-child-field\"><span style=\"font-weight: 400\">etc<\/span><\/a><span style=\"font-weight: 400\">)\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">O recente formato de indexa\u00e7\u00e3o scorch usa FiniteStateTransducers(<\/span><a href=\"https:\/\/en.wikipedia.org\/wiki\/Finite-state_transducer\"><span style=\"font-weight: 400\">FST<\/span><\/a><span style=\"font-weight: 400\">) para implementar o Dicion\u00e1rio de Termos, que tem o seguinte <\/span><a href=\"https:\/\/cseweb.ucsd.edu\/classes\/sp15\/cse191-e\/lec3.html\"><span style=\"font-weight: 400\">DFA<\/span><\/a><span style=\"font-weight: 400\"> propriedade. Isso nos ajudou a aprimorar a abordagem novata para encontrar os termos candidatos em uma determinada dist\u00e2ncia de edi\u00e7\u00e3o da consulta.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">A abordagem \u00e9 criar um <\/span><b>L<\/b><span style=\"font-weight: 400\">evenshtein <\/span><b>A<\/b><span style=\"font-weight: 400\">utomaton(<\/span><a href=\"https:\/\/en.wikipedia.org\/wiki\/Levenshtein_automaton\"><span style=\"font-weight: 400\">LA<\/span><\/a><span style=\"font-weight: 400\">) para o termo dado na consulta de dist\u00e2ncia de edi\u00e7\u00e3o. Esse LA \u00e9 um DFA que tem a propriedade de corresponder a todos os termos que est\u00e3o, no m\u00e1ximo, a uma dist\u00e2ncia de edi\u00e7\u00e3o de um determinado \"d\" na consulta. E esse LA DFA seria ent\u00e3o feito para se juntar ou fazer uma interse\u00e7\u00e3o com o corpus de termos indexados\/dicion\u00e1rio de termos original (FST DFA) para filtrar os termos candidatos que precisam ser eventualmente pesquisados como parte da consulta.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h5><b>Oportunidade<\/b><\/h5>\n<p><span style=\"font-weight: 400\">At\u00e9 o lan\u00e7amento da vers\u00e3o 6.0, est\u00e1vamos criando o LA DFA novamente a cada consulta recebida, e essa parte da constru\u00e7\u00e3o do LA DFA acabou sendo desgastante em termos de uso de mem\u00f3ria e velocidade da constru\u00e7\u00e3o do DFA.<\/span><\/p>\n<h5><b>Resposta<\/b><\/h5>\n<p><span style=\"font-weight: 400\"> Inspirado no original <\/span><a href=\"https:\/\/citeseerx.ist.psu.edu\/viewdoc\/summary?doi=10.1.1.16.652\"><span style=\"font-weight: 400\">papel<\/span><\/a><span style=\"font-weight: 400\"> e a postagem no blog - <\/span><a href=\"https:\/\/fulmicoton.com\/posts\/levenshtein\/\"><span style=\"font-weight: 400\">Levenshtein<\/span><\/a><span style=\"font-weight: 400\">A constru\u00e7\u00e3o mais recente do aut\u00f4mato de Levenshtein adota uma abordagem de duas etapas. Na primeira etapa, ele pr\u00e9-computa um DFA param\u00e9trico para um conjunto de dist\u00e2ncias de edi\u00e7\u00e3o predefinidas* e essa parte \u00e9 completamente independente da string de consulta e, portanto, pode ser pr\u00e9-computada. Na segunda etapa, esse DFA param\u00e9trico \u00e9 usado para calcular o DFA LA por consulta. Isso faz com que a constru\u00e7\u00e3o do DFA seja bastante r\u00e1pida e f\u00e1cil de usar na mem\u00f3ria.<\/span><\/p>\n<h5><b>Recompensa<\/b><\/h5>\n<p><span style=\"font-weight: 400\">Os benchmarks do Go micro mostraram que a implementa\u00e7\u00e3o mais recente \u00e9 capaz de <\/span><b>5X<\/b><span style=\"font-weight: 400\"> mais r\u00e1pido e <\/span><b>12X<\/b><span style=\"font-weight: 400\"> melhor no uso da mem\u00f3ria. E, em nossos testes internos de desempenho, isso trouxe at\u00e9 <strong>~50%<\/strong> melhorias no rendimento da consulta.<\/span><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">Fico feliz em ver que voc\u00ea rolou a tela at\u00e9 aqui.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Vou fazer uma parada abrupta aqui para facilitar sua aten\u00e7\u00e3o e guardar as hist\u00f3rias restantes para a Parte 2. A pr\u00f3xima parte abordar\u00e1 os ganhos de desempenho com a ado\u00e7\u00e3o do gRPC no FTS, bem como com consultas como intervalo num\u00e9rico, prefixo, curinga etc.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h5><strong>\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<em> \u00a0&#8230; <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/fts-performance-improvements-in-6-5-0-part-2\/\">Parte 2<\/a><\/em><\/strong><\/h5>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400\">{Dist\u00e2ncias de edi\u00e7\u00e3o pr\u00e9-definidas =&gt; no momento, o FTS suporta dist\u00e2ncias de edi\u00e7\u00e3o de at\u00e9 2, ou seja, apenas 1 e 2.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">A principal raz\u00e3o para isso \u00e9 que, em qualquer corpus de documentos de tamanho razo\u00e1vel, haver\u00e1 muitos termos que correspondem a uma dist\u00e2ncia de edi\u00e7\u00e3o &gt; 2 do termo de consulta. Portanto, qualquer pesquisa adicional no \u00edndice se torna muito intensiva em termos de recursos, al\u00e9m de diminuir a relev\u00e2ncia da pesquisa}.<\/span><\/p>","protected":false},"excerpt":{"rendered":"<p>Ever since the nimbler, refined `scorch` indexing format released in Couchbase 6.0.0, the FTS team has been pretty excited about the future optimisation potential unlocked with the newer indexing scheme. With the 6.5.0 release, we have essentially embarked on a [&hellip;]<\/p>","protected":false},"author":26446,"featured_media":5952,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816,2165],"tags":[2378],"ppma_author":[9075],"class_list":["post-7153","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","category-full-text-search","tag-6-5"],"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>A Glimpse of FTS Performance Improvements in 6.5.0 - Part 1 - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"FTS performance improvements on geo queries, fuzzy\/edit distance queries, levenshtein automaton, FSTs, bounded rectangle, point distance queries.\" \/>\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\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A Glimpse of FTS Performance Improvements in 6.5.0 - Part 1\" \/>\n<meta property=\"og:description\" content=\"FTS performance improvements on geo queries, fuzzy\/edit distance queries, levenshtein automaton, FSTs, bounded rectangle, point distance queries.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-07-04T01:54:18+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-07-13T07:46:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/116-hero-liquid-water-drop.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"386\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Sreekanth Sivasankaran\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sreekanth Sivasankaran\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/\"},\"author\":{\"name\":\"Sreekanth Sivasankaran\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/7bbda3cf57beae8bd9cba686c0c6fe7a\"},\"headline\":\"A Glimpse of FTS Performance Improvements in 6.5.0 &#8211; Part 1\",\"datePublished\":\"2019-07-04T01:54:18+00:00\",\"dateModified\":\"2021-07-13T07:46:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/\"},\"wordCount\":894,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/116-hero-liquid-water-drop.jpg\",\"keywords\":[\"6.5\"],\"articleSection\":[\"Couchbase Server\",\"Full-Text Search\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/\",\"name\":\"A Glimpse of FTS Performance Improvements in 6.5.0 - Part 1 - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/116-hero-liquid-water-drop.jpg\",\"datePublished\":\"2019-07-04T01:54:18+00:00\",\"dateModified\":\"2021-07-13T07:46:05+00:00\",\"description\":\"FTS performance improvements on geo queries, fuzzy\/edit distance queries, levenshtein automaton, FSTs, bounded rectangle, point distance queries.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/116-hero-liquid-water-drop.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/116-hero-liquid-water-drop.jpg\",\"width\":1024,\"height\":386},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A Glimpse of FTS Performance Improvements in 6.5.0 &#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\":\"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\/7bbda3cf57beae8bd9cba686c0c6fe7a\",\"name\":\"Sreekanth Sivasankaran\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/a60af16118050d1ea3a927388dc4dfb7\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/01af11c4c81e84e518ab465b39b7a5b3c874de79270af74043cc3d4edb92ff4e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/01af11c4c81e84e518ab465b39b7a5b3c874de79270af74043cc3d4edb92ff4e?s=96&d=mm&r=g\",\"caption\":\"Sreekanth Sivasankaran\"},\"description\":\"Sreekanth Sivasankaran is a Principal Engineer\/Senior Engineering manager at Couchbase R&amp;D. He leads the design and development of distributed and highly performant Search functionality. And he has over 17 years of product development experience in various domains like telecom, handsets, enterprise software, big data technologies, and distributed systems.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/sreekanth-sivasankaran\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"A Glimpse of FTS Performance Improvements in 6.5.0 - Part 1 - The Couchbase Blog","description":"Melhorias no desempenho do FTS em consultas geogr\u00e1ficas, consultas de dist\u00e2ncia difusa\/editada, aut\u00f4mato de Levenshtein, FSTs, ret\u00e2ngulo delimitado, consultas de dist\u00e2ncia de pontos.","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\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/","og_locale":"pt_BR","og_type":"article","og_title":"A Glimpse of FTS Performance Improvements in 6.5.0 - Part 1","og_description":"FTS performance improvements on geo queries, fuzzy\/edit distance queries, levenshtein automaton, FSTs, bounded rectangle, point distance queries.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/","og_site_name":"The Couchbase Blog","article_published_time":"2019-07-04T01:54:18+00:00","article_modified_time":"2021-07-13T07:46:05+00:00","og_image":[{"width":1024,"height":386,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2018\/11\/116-hero-liquid-water-drop.jpg","type":"image\/jpeg"}],"author":"Sreekanth Sivasankaran","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Sreekanth Sivasankaran","Est. reading time":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/"},"author":{"name":"Sreekanth Sivasankaran","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/7bbda3cf57beae8bd9cba686c0c6fe7a"},"headline":"A Glimpse of FTS Performance Improvements in 6.5.0 &#8211; Part 1","datePublished":"2019-07-04T01:54:18+00:00","dateModified":"2021-07-13T07:46:05+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/"},"wordCount":894,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/116-hero-liquid-water-drop.jpg","keywords":["6.5"],"articleSection":["Couchbase Server","Full-Text Search"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/","url":"https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/","name":"A Glimpse of FTS Performance Improvements in 6.5.0 - Part 1 - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/116-hero-liquid-water-drop.jpg","datePublished":"2019-07-04T01:54:18+00:00","dateModified":"2021-07-13T07:46:05+00:00","description":"Melhorias no desempenho do FTS em consultas geogr\u00e1ficas, consultas de dist\u00e2ncia difusa\/editada, aut\u00f4mato de Levenshtein, FSTs, ret\u00e2ngulo delimitado, consultas de dist\u00e2ncia de pontos.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/116-hero-liquid-water-drop.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2018\/11\/116-hero-liquid-water-drop.jpg","width":1024,"height":386},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/a-glimpse-of-fts-performance-improvements-in-6-5-0-part-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"A Glimpse of FTS Performance Improvements in 6.5.0 &#8211; Part 1"}]},{"@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\/7bbda3cf57beae8bd9cba686c0c6fe7a","name":"Sreekanth Sivasankaran","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/a60af16118050d1ea3a927388dc4dfb7","url":"https:\/\/secure.gravatar.com\/avatar\/01af11c4c81e84e518ab465b39b7a5b3c874de79270af74043cc3d4edb92ff4e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/01af11c4c81e84e518ab465b39b7a5b3c874de79270af74043cc3d4edb92ff4e?s=96&d=mm&r=g","caption":"Sreekanth Sivasankaran"},"description":"Sreekanth Sivasankaran is a Principal Engineer\/Senior Engineering manager at Couchbase R&amp;D. He leads the design and development of distributed and highly performant Search functionality. And he has over 17 years of product development experience in various domains like telecom, handsets, enterprise software, big data technologies, and distributed systems.","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/sreekanth-sivasankaran\/"}]}},"authors":[{"term_id":9075,"user_id":26446,"is_guest":0,"slug":"sreekanth-sivasankaran","display_name":"Sreekanth Sivasankaran","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/01af11c4c81e84e518ab465b39b7a5b3c874de79270af74043cc3d4edb92ff4e?s=96&d=mm&r=g","author_category":"","last_name":"Sivasankaran","first_name":"Sreekanth","job_title":"","user_url":"","description":"Sreekanth Sivasankaran \u00e9 engenheiro principal\/gerente s\u00eanior de engenharia da Couchbase R&amp;D. Ele lidera o projeto e o desenvolvimento da funcionalidade de pesquisa distribu\u00edda e de alto desempenho. Ele tem mais de 17 anos de experi\u00eancia em desenvolvimento de produtos em v\u00e1rios dom\u00ednios, como telecomunica\u00e7\u00f5es, telefones celulares, software corporativo, tecnologias de big data e sistemas distribu\u00eddos."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/7153","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\/26446"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=7153"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/7153\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/5952"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=7153"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=7153"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=7153"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=7153"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}