Couchbase Mobile 2.0, introduce potentes capacidades de Búsqueda de Texto Completo (FTS) en tus Documentos JSON. Esto es parte de la nueva interfaz de consulta basada en N1QLel lenguaje de consulta declarativo de Couchbase que extiende SQL para JSON. Si estás familiarizado con SQL, te sentirás como en casa con la semántica de la nueva API.
La búsqueda de texto completo permite realizar consultas en lenguaje natural. Este es el tercero de una serie de posts que discuten la interfaz de consulta en Couchbase Lite. Este blog asume que estás familiarizado con los fundamentos, así que si aún no lo has hecho, asegúrate de revisar la sección entrada anterior primero. Si le interesa, al final de esta entrada encontrará enlaces a blogs en los que se tratan otras características de la interfaz de consulta.
Puede descargar la última versión preliminar de Couchbase Mobile 2.0 desde aquí.
Fondo
Si estabas usando versiones 1.x de Couchbase Mobile, probablemente estés familiarizado con Map-Views para crear índices y consultas. En la versión 2.0, ya no es necesario crear vistas y funciones de mapa. En su lugar, una sencilla interfaz le permite crear índices y puede utilizar una interfaz Query Builder para construir sus consultas. En comparación, la nueva interfaz de consulta es más sencilla de utilizar y mucho más potente. Descubriremos algunas de sus características en este post.
Ejemplo de proyecto
Aunque en los ejemplos que se exponen aquí se utiliza Swift para iOS, tenga en cuenta que, salvo algunas pequeñas diferencias, la misma interfaz de consulta es compatible también con las plataformas Android y Windows.
Así que, con unos pequeños ajustes, deberías poder reutilizar los ejemplos de consulta de este artículo cuando trabajes con otras plataformas.
Siga las instrucciones siguientes si está interesado en un proyecto Swift de muestra
- Clonar el iOS Swift Playground desde GitHub
1$ git clone https://github.com/couchbaselabs/couchbase-lite-ios-api-playground - Siga las instrucciones de instalación en el LÉAME para construir y ejecutar la zona de juegos.
Modelo de datos de muestra
Utilizaremos la base de datos de muestras de viajes aquí. Puede incrustar esta base de datos preconstruida en su aplicación móvil y empezar a utilizarla para sus consultas.
El conjunto de datos de la muestra incluye varios tipos de documentos identificados por el tipo del documento. Nos centraremos en documentos de tipo "hito" . A continuación se muestra el modelo de documento JSON. Por brevedad, hemos omitido algunas de las propiedades que no son relevantes para este post del modelo a continuación.
|
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 el modelo anterior para cada uno de los ejemplos de consulta a continuación. **
El asa de la base de datos
En las consultas siguientes, utilizaremos la función Base de datos API para abrir/crear Base de Datos CouchbaseLite.
|
1 2 |
var options = DatabaseConfiguration() let db = try Database(name: kDBName, config: options) |
Conceptos básicos
La búsqueda de texto completo permite realizar consultas en lenguaje natural. En nuestro post sobre la Fundamentos de la consultadiscutimos el como y regex para operaciones de concordancia de patrones. FTS supera esa capacidad al permitir la compatibilidad con de origen, clasificación por relevancia y consultas en lenguaje natural específicas de la localidad.
Las búsquedas de texto completo son no distingue mayúsculas de minúsculas y utilizar el match expresión de consulta. Para realizar FTS, debe crear Índice de texto completo en las propiedades apropiadas. Puede crear índices en una o varias propiedades.
Stemming
Antes de pasar a los ejemplos, hablemos de la separación de palabras. Se trata de reducir las palabras a su raíz. Así, para instancia"gatuno", "gatuno" y "gatos" se reducen a la palabra "gato". Así, la búsqueda del término "gatos" nos daría resultados que coincidirían con "gatuno", "gatuno" y así sucesivamente.
Couchbase Lite actualmente soporta Stemming en los siguientes idiomas
* danish
* dutch
* español
* finlandés
* francés
* alemán
* húngaro
* italiano
* noruego
* portugués
* rumano
* ruso
* español
* sueco
* turco
Si no se utiliza ningún idioma específico, el tokenizador seguirá dividiendo el texto en palabras a partir de los caracteres Unicode de espacio en blanco. Así que debería funcionar, aunque menos bien, con cualquier idioma que ponga espacios entre palabras.
Índice de texto completo
En nombre que se asocia al índice durante la creación es importante. Los ejemplos de consulta que veremos más adelante harán referencia al índice apropiado mediante el nombre
Índice de propiedades individuales
El siguiente ejemplo crea un fullTextIndex en el "contenido" propiedad de un Documento. El "stemming" está activado por defecto y se asume que la configuración regional es la del dispositivo. Aunque no se muestra a continuación, también tiene la opción de especificar si los "acentos" deben ignorarse o no mediante la opción ignoreAccents opción. Por defecto, los acentos no se ignoran.
|
1 2 |
let ftsIndex = IndexBuilder.fullTextIndex(items: FullTextIndexItem.property("content")) try db.createIndex(ftsIndex,withName: "ContentFTSIndex") |
Índice de propiedades múltiples
El siguiente ejemplo crea un fullTextIndex en "contenido" y "nombre" propiedades de un Documento
|
1 2 |
let ftsIndex = IndexBuilder.fullTextIndex(items: FullTextIndexItem.property("content"),FullTextIndexItem.property("name")) try db.createIndex(ftsIndex,withName: "ContentAndNameFTSIndex") |
Índice sin stemming
El siguiente ejemplo crea un fullTextIndex en el "contenido" propiedad de un Documento con el stemming desactivado. El stemming se activa por defecto utilizando la configuración actual del idioma del dispositivo. Si el idioma es nulo, se desactiva el stemming.
|
1 2 |
let ftsIndex = IndexBuilder.fullTextIndex(items: FullTextIndexItem.property("content")).language(nil) try db.createIndex(ftsIndex,withName: "ContentFTSIndexNoStemming") |
Búsqueda FTS con stemming
La siguiente consulta recupera los id y contenido propiedades de "hito" tipo documentos que contengan el término "Mecánica" en el "contenido" propiedad. Utilizamos la "ContentFTSIndex" que se creó anteriormente.
Solicitar
|
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)) |
Muestra de respuesta
La respuesta a la consulta anterior incluirá documentos que contengan los términos "mecánico", "mecanismo", "mecanismos", "mecánico", etc.
|
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." } ] |
Búsqueda FTS sin Stemming
La siguiente consulta recupera los id y contenido propiedades de "hito" tipo documentos que contienen el término exacto "Mecánica" en el "contenido" propiedad. Utilizamos la "ContenidoFTSIndexNoStemming" que se creó anteriormente y que especificaba la opción de desactivar el stemming.
Solicitar
|
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)) |
Muestra de respuesta
La respuesta a la consulta anterior incluirá documentos que contengan exactamente el término "mecánico". Tenga en cuenta de nuevo que todas las búsquedas son insensibles a mayúsculas y 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." } ] |
Búsqueda FTS en varias propiedades
La siguiente consulta recupera los id , nombre y contenido propiedades de "hito" tipo documentos que contengan el término "Mecánica" en el "nombre" o el "contenido" propiedad. Utilizamos la "ContentAndNameFTSIndex" creado anteriormente. Este índice permitía indexar el "nombre" y "contenido" propiedades
Solicitar
|
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)) |
Muestra de respuesta
La respuesta a la consulta anterior incluirá los documentos que contengan el término "mecánico" (o sus variantes derivadas por stemming) en la propiedad "nombre" o "contenido".
|
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" } ] |
Búsqueda FTS con expresiones lógicas
En un ejemplo anterior, has visto que desactivando el stemming, puedes buscar la cadena de búsqueda exacta. Pero, ¿y si quiere buscar más de un término de búsqueda? En match acepta expresiones lógicas como AND y OR.
La siguiente consulta recupera los id y contenido propiedades de "hito" tipo documentos que contengan el término "Mecánica" o "Mecanismo" en el "contenido" propiedad. Utilizamos la "ContenidoFTSIndexNoStemming" que se creó anteriormente para desactivar el stemming.
Solicitar
|
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)) |
Muestra de respuesta
La respuesta a la consulta anterior incluirá los documentos que contengan exactamente los términos "mecánico" o "mecanismo" en la propiedad "contenido".
|
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." } ] |
Búsqueda FTS con expresión Wilcard
Puede utilizar el carácter "*" en la cadena de búsqueda para representar coincidencias de cero o más caracteres.
La siguiente consulta recupera los id y contenido propiedades de "hito" tipo documentos que contengan el término "walt*" en el "contenido" propiedad. Esto coincidirá con todos los términos de búsqueda que empiecen por "walt" seguido de cero o más caracteres. Utilizamos la propiedad "ContentFTSIndex" que se creó anteriormente.
NOTA: Se podría argumentar que el uso de comodines en el término de búsqueda podría ser una forma ingenua de aplicar la derivación. Pero entonces se puede acabar con formas derivadas que pueden no corresponder a los términos derivados mediante stemming. Así que es preferible utilizar stemming si eso es lo que necesita.
Solicitar
|
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)) |
Muestra de respuesta
La respuesta a la consulta anterior incluirá documentos que contengan los términos "walt", "Walter", "Waltham", "Walthamstow", etc.
|
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 " } ] |
Búsqueda FTS con palabras clave
Las stop words son palabras comunes en un idioma. En inglés, serían términos como "the", "is", "and" , "which", etc.
Ejemplo 1: La cadena de búsqueda contiene palabras vacías
Couchbase Lite ignora las palabras de parada que aparecen en la cadena de búsqueda.
La siguiente consulta recupera los id y contenido propiedades de "hito" tipo documentos que contengan el término "en la historia" en el "contenido" propiedad. Utilizamos la "ContentFTSIndex" que se creó anteriormente.
Couchbase Lite ignora las palabras de parada "on" y "the", por lo que obtendrá documentos que sólo incluyan el término "history" y las formas derivadas de la palabra raíz
Solicitar
|
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)) |
Muestra de respuesta
La respuesta a la consulta anterior incluirá los documentos que contengan los términos "historia" y las formas derivadas de esta palabra, como "histórico".
|
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.)" } ] |
Ejemplo 2: Ignorar las palabras vacías en la búsqueda
Por defecto, Couchbase Lite ignora las palabras de parada dentro del contenido de la búsqueda.
La siguiente consulta recupera los id y contenido propiedades de "hito" tipo documentos que contengan los términos "aleta azul aleta amarilla" en el "contenido" propiedad. Utilizamos la "ContentFTSIndex" que se creó anteriormente.
Couchbase Lite ignora las palabras de parada durante la búsqueda, por lo que obtendría documentos que incluyeran los términos "azul", "aleta" y "amarillo" en ese orden, separados por cualquier número de palabras de parada.
Solicitar
|
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"> |
Muestra de respuesta
La respuesta a la consulta anterior incluirá documentos que contengan los términos "azul", "aleta" y "amarillo" separados por cualquier número de palabras de parada, como "aleta azul y aleta amarilla".
|
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. )" } ] |
Búsqueda FTS con clasificación
Puede utilizar la función FunciónTextoCompleto.rank para especificar el orden de clasificación de los resultados de la búsqueda. Esto es útil para clasificar las coincidencias por orden de mejor coincidencia.
La siguiente consulta recupera los id y contenido propiedades de "hito" tipo documentos que contengan el término "atraer" en el "contenido" propiedad. Los documentos se ordenan en orden descendente según su rango, lo que significa que el documento con el mayor número de coincidencias se ordena por encima del resto.
Solicitar
|
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)) |
Muestra de respuesta
La respuesta a la consulta anterior incluirá los documentos que incluyan el término "atraer" o sus versiones derivadas. Los documentos con el mayor número de coincidencias se clasifican en orden 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." } ] |
Limitaciones
Aunque la capacidad de FTS en Couchbase Lite 2.0 es extremadamente potente y sería suficiente para los casos de uso típicos en una base de datos integrada, hay algunas limitaciones
- La expresión de coincidencia sólo puede estar en el nivel superior o en la expresión AND del nivel superior. Esto significa que la siguiente expresión no está permitida ftsExpression.match("atraer").or(ftsExpression2.match("museo"))
- Tokenizadores lingüísticos personalizados
La lista de idiomas soportados se especificó anteriormente. En el momento de escribir este post, no es posible conectar un tokenizador personalizado para ampliar la compatibilidad a otros idiomas. - Soporte de búsqueda difusa
No podemos especificar un factor de "imprecisión" en la consulta que pueda dar lugar a que se consideren coincidencias menos relevantes. - Facetas
No hay soporte para la búsqueda facetada
Ten en cuenta que Couchbase Lite es una base de datos integrada. Así que se podría argumentar que las capacidades de FTS no tienen que ser tan extensas como una implementación de base de datos del lado del servidor. El soporte para estas será evaluado en futuras versiones.
¿Qué sigue?
Esta entrada de blog muestra cómo puedes aprovechar las capacidades de Búsqueda de Texto Completo (FTS) en la nueva API de Consulta en Couchbase Mobile 2.0. Esto es un comienzo. Espera ver más funcionalidades en futuras versiones. Puedes descargar la última versión de nuestra descargas página.
Aquí hay algunos otros posts relacionados con Couchbase Mobile Query que pueden ser de interés
- Este entrada del blog analiza los fundamentos
- Este entrada del blog explica cómo consultar colecciones de matrices
- Este entrada del blog explica cómo realizar consultas JOIN
Si tiene alguna pregunta o sugerencia, deje un comentario a continuación o póngase en contacto conmigo en Twitter @rajagp o envíeme un correo electrónico priya.rajagopal@couchbase.com. En Foros de Couchbase son otro buen lugar para plantear preguntas.