O Couchbase Mobile 2.0 apresenta recursos avançados de pesquisa de texto completo (FTS) em seus documentos JSON. Isso faz parte da nova interface de consulta baseada em N1QLa linguagem de consulta declarativa do Couchbase que estende o SQL para JSON. Se você estiver familiarizado com SQL, vai se sentir em casa com a semântica da nova API.
O Full Text Search permite a consulta em linguagem natural. Este é o terceiro de uma série de posts que discute a interface de consulta no Couchbase Lite. Este blog pressupõe que você esteja familiarizado com os fundamentos, portanto, se ainda não o fez, não deixe de revisar o artigo postagem anterior primeiro. Se estiver interessado, os links para blogs que discutem outros recursos da interface do Query são fornecidos no final desta publicação.
Você pode fazer o download da versão de pré-lançamento mais recente do Couchbase Mobile 2.0 em aqui.
Histórico
Se você estava usando as versões 1.x do Couchbase Mobile, provavelmente está familiarizado com Visualizações de mapas para criar índices e consultas. Na versão 2.0, você não precisa mais criar visualizações e funções de mapa! Em vez disso, uma interface simples permite a criação de índices e você pode usar uma interface do Query Builder para construir suas consultas. A nova interface de consulta é mais simples de usar e muito mais poderosa em comparação. Vamos descobrir alguns de seus recursos nesta postagem.
Projeto de amostra
Embora os exemplos discutidos aqui usem o Swift para iOS, observe que, salvo algumas pequenas diferenças, a mesma interface de consulta também é compatível com as plataformas Android e Windows.
Portanto, com alguns pequenos ajustes, você poderá reutilizar os exemplos de consulta desta postagem ao trabalhar com outras plataformas.
Siga as instruções abaixo se você estiver interessado em um projeto Swift de amostra
- Clone o iOS Swift Playground do GitHub
1$ git clone https://github.com/couchbaselabs/couchbase-lite-ios-api-playground - Siga as instruções de instalação no manual correspondente LEIAME para criar e executar o playground.
Modelo de dados de amostra
Usaremos o banco de dados Travel Sample localizado aqui. Você pode incorporar esse banco de dados pré-criado em seu aplicativo móvel e começar a usá-lo para suas consultas.
O conjunto de dados de amostra inclui vários tipos de documentos, conforme identificado pelo tipo no documento. Vamos nos concentrar em documentos de tipo "marco" . O modelo de documento JSON é mostrado abaixo. Para fins de brevidade, omitimos do modelo abaixo algumas das propriedades que não são relevantes para esta postagem.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
{ "activity": "see", "address": "84 rue Claude Monet", "alt": "Fondation Claude Monet", "city": "Giverny", "content": "the house is quietly eccentric and highly interesting in an Orient-influenced style, and includes Monet's collection of [https://www.intermonet.com/japan/ Japanese prints]. There are no original Monet paintings on the site - the real drawcard, is the gardens around the house ...", "country": "France", "directions": null, "email": null, "geo": { "accuracy": "ROOFTOP", "lat": 49.0753489, "lon": 1.5337884 }, "hours": "open April-October Mo-Su 9:30-18:00", "id": 10061, "image": null, "name": "Monet's House", "phone": "+33 232512821", "price": "€9, $5 students, €4 4.00 disabled, under-7s free", "state": "Haute-Normandie", "title": "Giverny", "tollfree": null, "type": "landmark", "url": "https://www.fondation-monet.com/" } |
** Consulte o modelo acima para cada um dos exemplos de consulta abaixo. **
O identificador do banco de dados
Nas consultas abaixo, usaremos o Banco de dados API para abrir/criar o banco de dados CouchbaseLite.
|
1 2 |
var options = DatabaseConfiguration() let db = try Database(name: kDBName, config: options) |
O básico
O Full Text Search permite a consulta em linguagem natural. Em nossa postagem sobre o Fundamentos da consultadiscutimos o como e regex expressões para operações de correspondência de padrões. O FTS supera esse recurso ao permitir o suporte a derivação, classificação baseada em relevância e consulta em linguagem natural específica do local.
As pesquisas de texto completo são não diferencia maiúsculas de minúsculas e usar o partida expressão de consulta. Para executar o FTS, você deve criar Índice do texto completo nas propriedades apropriadas. Você pode criar um índice em uma ou mais propriedades.
Derivação
Antes de prosseguirmos com os exemplos, primeiro uma palavra sobre Stemming. Stemming é o processo de reduzir as palavras à sua palavra raiz. Assim, para instânciaOs termos "catty", "catlike" e "cats" são reduzidos à palavra "cat". Portanto, a busca pelo termo "cats" nos daria resultados que correspondem a "cat", "catlike" e assim por diante.
Atualmente, o Couchbase Lite oferece suporte a Stemming nos seguintes idiomas
* Dinamarquês
* Holandês
* Inglês
* finlandês
* Francês
* Alemão
* húngaro
* Italiano
* norueguês
* português
* romeno
* Russo
* espanhol
* sueco
* Turco
Se nenhum idioma específico for usado, o tokenizador ainda dividirá o texto em palavras com caracteres de espaço em branco Unicode. Portanto, ele deve funcionar, embora menos bem, com qualquer idioma que coloque espaços entre as palavras.
Índice do texto completo
O nome que está associado ao índice durante a criação é importante. Os exemplos de consulta que veremos mais tarde farão referência ao índice apropriado por meio do nome
Índice de propriedade única
O exemplo a seguir cria um fullTextIndex no "content" (conteúdo) propriedade de um Documento. Por padrão, a derivação é ativada e a localidade é considerada a localidade do dispositivo. Embora não seja mostrado abaixo, você também tem a opção de especificar se os "acentos" devem ser ignorados ou não por meio da opção ignoreAccents opção. Por padrão, os acentos não são ignorados.
|
1 2 |
let ftsIndex = IndexBuilder.fullTextIndex(items: FullTextIndexItem.property("content")) try db.createIndex(ftsIndex,withName: "ContentFTSIndex") |
Índice de propriedades múltiplas
O exemplo a seguir cria um fullTextIndex em "content" (conteúdo) e "name" (nome) propriedades de um Documento
|
1 2 |
let ftsIndex = IndexBuilder.fullTextIndex(items: FullTextIndexItem.property("content"),FullTextIndexItem.property("name")) try db.createIndex(ftsIndex,withName: "ContentAndNameFTSIndex") |
Índice sem stemização
O exemplo a seguir cria um fullTextIndex no "content" (conteúdo) propriedade de um Documento com o stemming desativado. O stemming é ativado por padrão usando as configurações atuais de idioma do dispositivo. Definir o idioma como nulo desabilitará o stemming.
|
1 2 |
let ftsIndex = IndexBuilder.fullTextIndex(items: FullTextIndexItem.property("content")).language(nil) try db.createIndex(ftsIndex,withName: "ContentFTSIndexNoStemming") |
Pesquisa FTS com Stemming
A consulta abaixo busca o id e conteúdo propriedades de "marco" tipo documentos que contêm o termo "Mecânica" no "content" (conteúdo) propriedade. Usamos o "ContentFTSIndex" que foi criado anteriormente.
Solicitação
|
1 2 3 4 5 6 7 8 9 |
let ftsExpression = FullTextExpression.index("ContentFTSIndex") let searchQuery = QueryBuilder .select(SelectResult.expression(Meta.id), SelectResult.expression(Expression.property("content"))) .from(DataSource.database(db)) .where( Expression.property("type").equalTo(Expression.string ("landmark")) .and( ftsExpression.match("Mechanical"))) .limit(Expression.int(limit)) |
Resposta de amostra
A resposta à consulta acima incluirá documentos que contêm os termos "mechanical", "mechanism", "mechanisms", "mechanic" e assim por diante.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[ { "id": "landmark_21703", "content": "The Swiss luxury watch manufacturer, founded in 1851, is known for precise mechanics." }, { "id": "landmark_2592", "content": "Here you can see the mechanisms that drive San Francisco's famed cable cars, as well as plenty of cable car memorabilia and information on the history of the cable cars." }, { "id": "landmark_26144", "content": "This scenic section of the Golden Gate National Recreation Area is a favorite for hikers, bikers and beach-goers, with rugged coastal highlands and deep sand dunes. Hang gliding is quite popular here, with several shops for hang gliders in the area. Nearby is the remnants of Battery Davis, a WWII-era military defense mechanism." }, { "id": "landmark_33234", "content": "Western-style steakhouse features a huge, ‘country’ bar and even a mechanical bull for those ready for a faux bull-riding adventure. The menu is vast and surprisingly inexpensive. And again, the saloon is a longtime trendy destination along the Sunset Strip for raucous good times." } ] |
Pesquisa FTS sem Derivação
A consulta abaixo busca o id e conteúdo propriedades de "marco" tipo documentos que contêm o termo exato "Mecânica" no "content" (conteúdo) propriedade. Usamos o "ContentFTSIndexNoStemming" que foi criado anteriormente e que especificava a opção de desativar o stemming.
Solicitação
|
1 2 3 4 5 6 7 8 |
let ftsExpression = FullTextExpression.index("ContentFTSIndexNoStemming") let searchQuery = QueryBuilder .select(SelectResult.expression(Meta.id), SelectResult.expression(Expression.property("content"))) .from(DataSource.database(db)) .where(Expression.property("type").equalTo(Expression.string ("landmark")) .and( ftsExpression.match("Mechanical"))) .limit(Expression.int(limit)) |
Resposta de amostra
A resposta à consulta acima incluirá documentos que contêm exatamente o termo "mechanical". Observe novamente que todas as pesquisas não diferenciam maiúsculas de minúsculas.
|
1 2 3 4 5 6 7 |
[ { "id": "landmark_33234", "content": "Western-style steakhouse features a huge, ‘country’ bar and even a mechanical bull for those ready for a faux bull-riding adventure. The menu is vast and surprisingly inexpensive. And again, the saloon is a longtime trendy destination along the Sunset Strip for raucous good times." } ] |
Pesquisa FTS em várias propriedades
A consulta abaixo busca o id , nome e conteúdo propriedades de "marco" tipo documentos que contêm o termo "Mecânica" no "name" (nome) ou o "content" (conteúdo) propriedade. Usamos o "ContentAndNameFTSIndex" que foi criado anteriormente. Esse índice habilitou a indexação no "name" (nome) e "content" (conteúdo) propriedades
Solicitação
|
1 2 3 4 5 6 7 8 9 |
let ftsExpression = FullTextExpression.index("ContentAndNameFTSIndex") let searchQuery = QueryBuilder .select(SelectResult.expression(Meta.id), SelectResult.expression(Expression.property("name")), SelectResult.expression(Expression.property("content"))) .from(DataSource.database(db)) .where(Expression.property("type").equalTo(Expression.string ("landmark")) .and( ftsExpression.match("Mechanical"))) .limit(Expression.int(limit)) |
Resposta de amostra
A resposta à consulta acima incluirá documentos que contêm o termo "mechanical" (ou variantes dele derivadas por meio de stemming) na propriedade "name" ou "content".
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
[ { "id": "landmark_10062", "name": "Natural Mechanical Museum", "content": "Founded by the Guillemard brothers: Jean-pierre, René and Gérard currently run restorations and exhibitions with the help of an enthusiasts team who devoted their time and known-how to the Patrimony preservation. The museum origin is a private collection of steam internal combustion engines; founded in 1955 by the Guillemard family a GIVERNY residents since generations." }, { "id": "landmark_21703", "name": "Patek Philippe Salons", "content": "The Swiss luxury watch manufacturer, founded in 1851, is known for precise mechanics." }, { "id": "landmark_25929", "name": "Cable Car Museum", "content": "Here you can see the mechanisms that drive San Francisco's famed cable cars, as well as plenty of cable car memorabilia and information on the history of the cable cars" }, { "id": "landmark_26144", "name": "Fort Funston", "content": "This scenic section of the Golden Gate National Recreation Area is a favorite for hikers, bikers and beach-goers, with rugged coastal highlands and deep sand dunes. Hang gliding is quite popular here, with several shops for hang gliders in the area. Nearby is the remnants of Battery Davis, a WWII-era military defense mechanism" } ] |
Pesquisa FTS com expressões lógicas
Em um exemplo anterior, você viu que, ao desativar o stemming, é possível procurar a string de pesquisa exata. Mas e se você quisesse procurar mais de um termo de pesquisa? O partida A expressão de consulta aceita expressões lógicas, incluindo AND e OR.
A consulta abaixo busca o id e conteúdo propriedades de "marco" tipo documentos que contêm o termo "Mecânica" ou "Mecanismo" no "content" (conteúdo) propriedade. Usamos o "ContentFTSIndexNoStemming" que foi criado anteriormente para desativar o stemming.
Solicitação
|
1 2 3 4 5 6 7 8 |
let ftsExpression = FullTextExpression.index("ContentFTSIndexNoStemming") let searchQuery = QueryBuilder .select(SelectResult.expression(Meta.id), SelectResult.expression(Expression.property("content"))) .from(DataSource.database(db)) .where(Expression.property("type").equalTo(Expression.string ("landmark")) .and( ftsExpression.match("Mechanical OR Mechanism"))) .limit(Expression.int(limit)) |
Resposta de amostra
A resposta à consulta acima incluirá documentos que contenham exatamente os termos "mechanical" ou "mechanism" na propriedade "content".
|
1 2 3 4 5 6 7 8 9 10 11 |
[ { "id": "landmark_26144", "content": "This scenic section of the Golden Gate National Recreation Area is a favorite for hikers, bikers and beach-goers, with rugged coastal highlands and deep sand dunes. Hang gliding is quite popular here, with several shops for hang gliders in the area. Nearby is the remnants of Battery Davis, a WWII-era military defense mechanism" }, { "id": "landmark_33234", "content": "Western-style steakhouse features a huge, ‘country’ bar and even a mechanical bull for those ready for a faux bull-riding adventure. The menu is vast and surprisingly inexpensive. And again, the saloon is a longtime trendy destination along the Sunset Strip for raucous good times." } ] |
Pesquisa FTS com expressão Wilcard
Você pode usar o caractere "*" na cadeia de pesquisa para representar zero ou mais correspondências de caracteres.
A consulta abaixo busca o id e conteúdo propriedades de "marco" tipo documentos que contêm o termo "walt*" no "content" (conteúdo) propriedade. Isso corresponderá a todos os termos de pesquisa que começam com "walt" seguido de zero ou mais caracteres. Usamos a propriedade "ContentFTSIndex" que foi criado anteriormente.
OBSERVAÇÃO: Pode-se argumentar que o uso de curingas no termo de pesquisa pode ser uma maneira ingênua de implementar o stemming. Mas, nesse caso, você pode acabar com formas derivadas que podem não corresponder aos termos derivados por stemming. Portanto, é preferível usar o stemming se for isso que você precisa.
Solicitação
|
1 2 3 4 5 6 7 8 |
let ftsExpression = FullTextExpression.index("ContentFTSIndex") let searchQuery = QueryBuilder .select(SelectResult.expression(Meta.id), SelectResult.expression(Expression.property("content"))) .from(DataSource.database(db)) .where(Expression.property("type").equalTo(Expression.string ("landmark")) .and( ftsExpression.match("walt*"))) .limit(Expression.int(limit)) |
Resposta de amostra
A resposta à consulta acima incluirá documentos que contêm os termos "walt", "Walter", "Waltham", "Walthamstow" e assim por diante.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
[ { "id": "landmark_10134", "content": "On the Ibrox tour, you get access to the home dressing room and hear a recorded message from Walter Smith and Ally McCoist before climbing the marble staircase, visit the illustrious trophy room, the blue room and the managers office. Tickets, except for matches against Celtic, are available online from the clubs website, ticket centre at the stadium and club outlets at JJB Sports Stores in Glasgow city centre." }, { "id": "landmark_16104", "content": "Presents the history of Waltham Forest. The building was constructed to be a work house and has since been used as a police station and a private home. Its collection includes the Bremer car, built by engineer Frederick Bremer in 1892 it has a claim to being this first petrol-driven car made in Britain." }, { "id": "landmark_16105", "content": "The ancient nucleus of present day Walthamstow centred around the 12 th century St.Marys Church " }, { "id": "landmark_16574", "content": "Impressive hall architecture complete with tours most days.The Dorothy Chandler Pavilion is open to the public Christmas Eve day with almost round the clock performances by amateur cultural arts groups.The Walt Disney Hall has daily tours ,check website for schedules." }, { "id": "landmark_8631", "content ": "Museum about famous Scottish authors, focussing on Robert Burns, Sir Walter Scott and Robert Louis Stevenson " } ] |
Pesquisa FTS com palavras de parada
As stop words referem-se a palavras comuns em um idioma. Em inglês, seriam termos como "the", "is", "and", "which" e assim por diante.
Exemplo 1: A cadeia de pesquisa contém palavras de parada
O Couchbase Lite ignora as palavras de parada que aparecem na string de pesquisa.
A consulta abaixo busca o id e conteúdo propriedades de "marco" tipo documentos que contêm o termo "sobre a história" no "content" (conteúdo) propriedade. Usamos o "ContentFTSIndex" que foi criado anteriormente.
O Couchbase Lite ignora as palavras de parada "on" e "the", portanto, você buscaria documentos que incluíssem apenas o termo "history" e as formas derivadas da palavra de origem
Solicitação
|
1 2 3 4 5 6 7 |
let ftsExpression = FullTextExpression.index("ContentFTSIndex") let searchQuery = QueryBuilder.select(SelectResult.expression(Meta.id), SelectResult.expression(Expression.property("content"))) .from(DataSource.database(db)) .where(Expression.property("type").equalTo(Expression.string ("landmark")) .and( ftsExpression.match("on the history"))) .limit(Expression.int(limit)) |
Resposta de amostra
A resposta à consulta acima incluirá documentos que contêm os termos "history" e formas derivadas dessa palavra, como "historical"
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
[ { "id": "landmark_10019", "content": "Museum on military engineering and the history of the British Empire. A quite extensive collection that takes about half a day to see. Of most interest to fans of British and military history or civil engineering." }, { "id": "landmark_10083", "content": " Tours take about 45 min. In front the building, George Square, the citys notional centre, is populated by several statues of civic leaders and famous figures from history and is often used for outdoor events." }, { "id": "landmark_10093", "content": "The auditorium has now garnered some world fame for being the place where the Susan Boyle audition - one of the most downloaded YouTube video clips in history - was filmed." }, { "id": "landmark_10101", "content": "This museum has a large collection of artifacts and exhibits showcasing the history of the city. If you don't want to pay to enter the museum itself, you can just walk into the building (which contains three separate museums) and look at some historical photographs on the walls of the atrium." }, { "id": "landmark_10105", "content": "The Peoples Palace is a great folk museum, telling the history of Glasgow and its people, from various perspectives, displaying details of Glasgow life (including one of Billy Connolly's banana boots). The Winter Gardens, adjacent, is a pleasant greenhouse with a reasonable cafe.)" } ] |
Exemplo 2: Ignorando palavras de parada durante a pesquisa
Por padrão, o Couchbase Lite ignora palavras de parada no conteúdo da pesquisa.
A consulta abaixo busca o id e conteúdo propriedades de "marco" tipo documentos que contêm os termos "barbatana azul barbatana amarela" no "content" (conteúdo) propriedade. Usamos o "ContentFTSIndex" que foi criado anteriormente.
O Couchbase Lite ignora palavras de parada durante a pesquisa, portanto, você buscaria documentos que incluíssem os termos "blue", "fin" e "yellow" nessa ordem, separados por qualquer número de palavras de parada.
Solicitação
|
1 2 3 4 5 6 7 |
let ftsExpression = FullTextExpression.index("ContentFTSIndex") let searchQuery = QueryBuilder.select(SelectResult.expression(Meta.id), SelectResult.expression(Expression.property("content"))) .from(DataSource.database(db)) .where(Expression.property("type").equalTo(Expression.string ("landmark")) .and( ftsExpression.match("blue fin yellow fin"))) .limit(Expression.int(limit))<code class="swift"> |
Resposta de amostra
A resposta à consulta acima incluirá documentos que contêm os termos "blue" (azul), "fin" (barbatana) e "yellow" (amarelo) separados por qualquer número de palavras de parada, como "blue fin and yellow fin" (barbatana azul e barbatana amarela)
|
1 2 3 4 5 6 7 |
[ { "id": "landmark_18840", "content": "This large aquarium specializes in exhibiting local sea life in typical local habitat displays, and has many spectacular exhibits. It is particularly known for its Kelp Forest exhibit, three stories high, filled with several varieties of giant kelp and a wide variety of marine animal species, and also for its million-gallon Open Sea exhibit with large blue fin and yellow fin tunas, mahi-mahis, sharks (including an occasional Great White Shark as a very temporary visitor, before being released back to the ocean), ocean sunfish (mola-molas) and sea turtles. The best exhibits include a large tank of silver sardines that swim around and around above one's head, and one of rescued sea otters deemed unreturnable to the wild and therefore kept at the aquarium. )" } ] |
Pesquisa FTS com classificação
Você pode usar o FullTextFunction.rank para especificar a ordem de classificação dos resultados da pesquisa. Isso é útil para classificar as correspondências na ordem da melhor correspondência.
A consulta abaixo busca o id e conteúdo propriedades de "marco" tipo documentos que contêm o termo "atrair" no "content" (conteúdo) propriedade. Os documentos são ordenados em ordem decrescente de acordo com a classificação, o que significa que o documento com o número máximo de correspondências é classificado acima dos demais.
Solicitação
|
1 2 3 4 5 6 7 8 |
let ftsExpression = FullTextExpression.index("ContentFTSIndexNoStemming") let searchQuery = QueryBuilder.select(SelectResult.expression(Meta.id), SelectResult.expression(Expression.property("content"))) .from(DataSource.database(db)) .where(Expression.property("type").equalTo(Expression.string ("landmark")) .and( ftsExpression.match("attract"))) .orderBy(Ordering.expression(FullTextFunction.rank("ContentFTSIndexNoStemming")).descending()) .limit(Expression.int(limit)) |
Resposta de amostra
A resposta à consulta acima incluirá documentos que incluem o termo "atrair" ou versões derivadas dele. Os documentos com o número máximo de correspondências são classificados em ordem superior.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[ { "id": "landmark_22056", "content": "Top paid-for visitor attraction in Wales including a farm, indoor vintage funfair, zoo and indoor and outdoor adventure play. All-weather family attraction with 50% of attractions undercover." }, { "id": "landmark_16309", "content": "The London Bridge Experience and London Tombs are two scare attractions for one price and have been voted the UK's Best Year Round Scare Attraction for three years running." }, { "id": "landmark_25216", "content": "TA seaside amusement park located near the southern end of Mission Beach, Belmont Park is a landmark with a number of shops, restaurants, an arcade, and a bunch of rides. The big attraction is the Giant Dipper, a historic roller coaster that is one of the only two remaining oceanfront roller coasters still operating on the west coast. Among the other rides is a FlowRider (a simulated wave attraction which you can bodyboard on), an antique carousel, bumper cars, slides, pendulum rides, tilt-a-whirl, and a trampoline " }, { "id": "landmark_1059", "content": "Aims to tell the history of flight throughout the 20th Century, and has a large collection of aircraft, including British Airways Concorde G-BOAA. Another rather good attraction (and well worth the look) is the De-Havilland Comet 4C, a derivative of the Worlds first jetliner." } ] |
Limitações
Embora a capacidade do FTS no Couchbase Lite 2.0 seja extremamente avançada e seja suficiente para casos de uso típicos de um banco de dados incorporado, há algumas limitações
- A expressão de correspondência só pode estar no nível superior ou na expressão AND de nível superior. Isso significa que a seguinte expressão não é permitida ftsExpression.match("attract").or(ftsExpression2.match("museum"))
- Tokenizadores de idiomas personalizados
A lista de idiomas compatíveis foi especificada anteriormente. No momento da redação deste post, não é possível conectar um tokenizador personalizado para ampliar o suporte a outros idiomas - Suporte à pesquisa difusa
Não podemos especificar um fator de "imprecisão" na consulta, o que pode resultar na consideração de correspondências menos relevantes - Facetas
Não há suporte para pesquisa facetada
Lembre-se de que o Couchbase Lite é um banco de dados incorporado. Portanto, pode-se argumentar que os recursos do FTS não precisam ser tão extensos quanto uma implementação de banco de dados no lado do servidor. O suporte para esses recursos será avaliado em versões futuras.
O que vem a seguir
Esta postagem do blog analisou como você pode aproveitar os recursos de pesquisa de texto completo (FTS) na nova API de consulta do Couchbase Mobile 2.0. Isso é um começo. Espere ver mais funcionalidades em versões futuras. Você pode fazer o download da versão mais recente em nosso downloads página.
Aqui estão algumas outras postagens relacionadas ao Couchbase Mobile Query que podem ser de interesse
- Isso postagem no blog discute os fundamentos
- Isso postagem no blog discute como consultar coleções de matrizes
- Isso postagem no blog discute como fazer consultas JOIN
Se tiver dúvidas ou comentários, deixe um comentário abaixo ou entre em contato comigo pelo Twitter @rajagp ou envie-me um e-mail priya.rajagopal@couchbase.com. O Fóruns do Couchbase são outro bom lugar para entrar em contato com perguntas.