{"id":12998,"date":"2022-04-05T09:22:52","date_gmt":"2022-04-05T16:22:52","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=12998"},"modified":"2025-06-13T20:52:13","modified_gmt":"2025-06-14T03:52:13","slug":"building-a-mobile-application-with-couchbase-part-2","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/building-a-mobile-application-with-couchbase-part-2\/","title":{"rendered":"Creaci\u00f3n de una aplicaci\u00f3n m\u00f3vil con Couchbase - Parte 2"},"content":{"rendered":"<p><span style=\"font-weight: 400\">Este blog de varias partes te ayudar\u00e1 a construir una aplicaci\u00f3n m\u00f3vil de extremo a extremo utilizando las caracter\u00edsticas l\u00edderes de la industria de Couchbase Lite. Las aplicaciones de extremo a extremo, escalables y de grado de producci\u00f3n incluyen las siguientes caracter\u00edsticas:<\/span><\/p>\n<ol>\n<li style=\"list-style-type: none\">\n<ol>\n<li><span style=\"font-weight: 400\">Una base de datos integrada: almacenar los datos localmente reduce los viajes por la red a una base de datos centralizada para cada actividad en el dispositivo. Esto contribuye en gran medida a mejorar la experiencia del usuario.<\/span><\/li>\n<li><span style=\"font-weight: 400\">Sincronizaci\u00f3n con otros dispositivos m\u00f3viles pares y con un servidor centralizado.\u00a0<\/span><\/li>\n<li><span style=\"font-weight: 400\">Capacidades anal\u00edticas avanzadas, <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/es\/products\/full-text-search\/\"><b>b\u00fasqueda de texto completo <\/b><\/a><span style=\"font-weight: 400\">y aprendizaje autom\u00e1tico en el dispositivo.<\/span><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p><span style=\"font-weight: 400\">Como hay mucho que tratar, hemos dividido este proyecto en tres partes. <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/es\/building-a-mobile-application-with-couchbase-part-1\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">La Parte 1 muestra el proceso de creaci\u00f3n de una aplicaci\u00f3n m\u00f3vil<\/span><\/a><span style=\"font-weight: 400\"> que aprovecha Couchbase Lite y lo utiliza como base de datos integrada para almacenar datos. <\/span><b>La parte 2 (este post) muestra c\u00f3mo ejecutar la b\u00fasqueda de texto completo (FTS) en el dispositivo.<\/b><span style=\"font-weight: 400\"> Y la parte 3 mostrar\u00e1 el proceso de sincronizaci\u00f3n de los datos con pares y un servidor Couchbase centralizado.<\/span><\/p>\n<h5><b>\u00bfQu\u00e9 es Couchbase Mobile?\u00a0<\/b><\/h5>\n<p><span style=\"font-weight: 400\">Couchbase es una galardonada base de datos distribuida NoSQL en la nube. Ofrece una versatilidad, un rendimiento, una escalabilidad y un valor financiero inigualables en implementaciones en la nube, locales, h\u00edbridas, en la nube distribuida y de computaci\u00f3n perimetral.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Los despliegues m\u00f3viles\/de vanguardia son una parte esencial del ecosistema digital que Couchbase Mobile aborda. <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/es\/products\/mobile\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Couchbase M\u00f3vil<\/span><\/a><span style=\"font-weight: 400\"> incluye:<\/span><\/p>\n<ol>\n<li style=\"list-style-type: none\">\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Base de datos Couchbase Lite integrada para dispositivos perif\u00e9ricos<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Pasarela de sincronizaci\u00f3n de alto rendimiento para la sincronizaci\u00f3n entre pares y con servidores centralizados<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Los centros de datos de borde basados en Couchbase Server se pueden desplegar en la nube, on-prem o en centros de datos de borde locales.<\/span><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h5><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/03\/image_2022-03-24_143557.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-12937\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/03\/image_2022-03-24_143557.png\" alt=\"Couchbase Mobile architectural diagram\" width=\"965\" height=\"675\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/03\/image_2022-03-24_143557.png 965w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/03\/image_2022-03-24_143557-300x210.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/03\/image_2022-03-24_143557-768x537.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/03\/image_2022-03-24_143557-20x14.png 20w\" sizes=\"auto, (max-width: 965px) 100vw, 965px\" \/><\/a><b>Visi\u00f3n general de la aplicaci\u00f3n m\u00f3vil<\/b><\/h5>\n<p><span style=\"font-weight: 400\">El c\u00f3digo de esta aplicaci\u00f3n de demostraci\u00f3n est\u00e1 disponible en mi <\/span><a href=\"https:\/\/github.com\/sandykris123\/couchbasemobile\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Repositorio GitHub de Couchbase Mobile<\/span><\/a><span style=\"font-weight: 400\">.<\/span> <span style=\"font-weight: 400\">Descargar el archivo <\/span><i><span style=\"font-weight: 400\">Rateit.zip<\/span><\/i><span style=\"font-weight: 400\"> y extrae los archivos a tu carpeta local.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Tambi\u00e9n puedes seguir las instrucciones de este blog para crear la aplicaci\u00f3n desde cero.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Las funciones de la aplicaci\u00f3n se dividen en tres partes\u00a0<\/span><\/p>\n<ol>\n<li style=\"list-style-type: none\">\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Enviar solicitudes de valoraci\u00f3n<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Recibir solicitudes de clasificaci\u00f3n de otros<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Ver la solicitud calificada devuelta por otros<\/span><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<p><span style=\"font-weight: 400\">Para conocer mejor los distintos componentes de la aplicaci\u00f3n, consulte <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/es\/building-a-mobile-application-with-couchbase-part-1\/\"><span style=\"font-weight: 400\">parte 1<\/span><\/a>,<span style=\"font-weight: 400\"> donde enviamos\/recibimos las solicitudes de clasificaci\u00f3n.<\/span><\/p>\n<h6><b>A\u00f1adir b\u00fasqueda de texto completo<\/b><\/h6>\n<p><span style=\"font-weight: 400\">En este ejemplo, a\u00f1adimos un simple <\/span><b>busque en <\/b><span style=\"font-weight: 400\">y el c\u00f3digo para a\u00f1adir un \u00edndice invertido (utilizado por los sistemas de b\u00fasqueda) que toma la entrada del usuario y muestra los resultados relevantes.<\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/04\/image_2022-04-04_180205.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-12999\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/04\/image_2022-04-04_180205-509x1024.png\" alt=\"Building a mobile NoSQL app - screenshot with full-text search added\" width=\"509\" height=\"1024\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/image_2022-04-04_180205-509x1024.png 509w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/image_2022-04-04_180205-149x300.png 149w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/image_2022-04-04_180205-300x604.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/image_2022-04-04_180205-10x20.png 10w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/image_2022-04-04_180205.png 554w\" sizes=\"auto, (max-width: 509px) 100vw, 509px\" \/><\/a><\/p>\n<h4><b>Primeros pasos: Revise la documentaci\u00f3n de CBLite<\/b><\/h4>\n<p><span style=\"font-weight: 400\">Por favor, revise el <\/span><a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/3.0\/android\/quickstart.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">documentaci\u00f3n<\/span><\/a><span style=\"font-weight: 400\"> para entender los distintos componentes de una aplicaci\u00f3n de base de datos Couchbase Lite. Creo una nueva base de datos para esta aplicaci\u00f3n cuando la aplicaci\u00f3n es invocada por primera vez. Alternativamente, la aplicaci\u00f3n tambi\u00e9n puede utilizar una base de datos pre-construida.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Los pasos para integrar la base de datos se encuentran en la secci\u00f3n <\/span><a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/3.0\/android\/quickstart.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Documentaci\u00f3n de Couchbase Lite<\/span><\/a><span style=\"font-weight: 400\">. Repasa cada una de las secciones para aprender a:<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">crear y abrir una base de datos<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">escribir un documento en la base de datos incrustada<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">escribir consultas para recuperar el documento<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">caducar o suprimir un documento<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">crear \u00edndices de b\u00fasqueda de texto completo\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">realizar una expresi\u00f3n de b\u00fasqueda FTS<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">crear una consulta que incorpore la expresi\u00f3n de b\u00fasqueda<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h6><b>Requisitos previos para la creaci\u00f3n de aplicaciones<\/b><\/h6>\n<p><span style=\"font-weight: 400\">Esta aplicaci\u00f3n se ha creado para dispositivos Android con los siguientes requisitos previos de software y hardware que debes tener en cuenta:<\/span><\/p>\n<ol>\n<li style=\"list-style-type: none\">\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Es necesario comprender los fundamentos de la creaci\u00f3n de aplicaciones con Android Studio y la programaci\u00f3n en Java.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Esta aplicaci\u00f3n de demostraci\u00f3n y las capturas de pantalla relacionadas proceden de la creaci\u00f3n de la aplicaci\u00f3n en un ordenador macOS.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Utilizamos (de libre acceso) <\/span><a href=\"https:\/\/developer.android.com\/studio\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Android Studio 2020.3<\/span><\/a><span style=\"font-weight: 400\"> para crear aplicaciones m\u00f3viles para dispositivos Android.\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><b>Se utiliza la versi\u00f3n 3.0.0-beta02 de Couchbase Lite.<\/b><span style=\"font-weight: 400\"> Las bibliotecas necesarias estar\u00e1n integradas en el c\u00f3digo y no ser\u00e1 necesario descargar el software manualmente en el escritorio.<\/span><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h4><b>Comprender el dise\u00f1o<\/b><\/h4>\n<p><span style=\"font-weight: 400\">Los archivos de dise\u00f1o son archivos XML que describen la pantalla de la aplicaci\u00f3n m\u00f3vil. Por ejemplo, <\/span><b>activity_main.xml<\/b><span style=\"font-weight: 400\"> tiene el <\/span><b>ENVIAR A<\/b><span style=\"font-weight: 400\">, <\/span><b>MENSAJE<\/b><span style=\"font-weight: 400\">, <\/span><b>ASUNTO <\/b><span style=\"font-weight: 400\">adem\u00e1s de los dos listviews que muestran las solicitudes recibidas y entrantes.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Tambi\u00e9n define qu\u00e9 funci\u00f3n invocar cuando la funci\u00f3n <\/span><b>HAGA CLIC PARA ENVIAR UNA SOLICITUD DE VALORACI\u00d3N<\/b><span style=\"font-weight: 400\">, <\/span><b>SOLICITUDES DE CALIFICACI\u00d3N RECIBIDAS<\/b><span style=\"font-weight: 400\"> y <\/span><b>SOLICITUDES DE CALIFICACI\u00d3N RECIBIDAS<\/b><span style=\"font-weight: 400\"> se pulsan los botones. El c\u00f3digo XML puede escribirse manualmente o autogenerarse estableciendo los atributos en el campo <\/span><i><span style=\"font-weight: 400\">atributos<\/span><\/i><span style=\"font-weight: 400\"> del dise\u00f1ador.\u00a0<\/span><span style=\"font-weight: 400\">Aqu\u00ed, a\u00f1adimos una entrada de b\u00fasqueda en el centro del dise\u00f1o:<\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/04\/image_2022-04-04_180309.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-13000\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/04\/image_2022-04-04_180309.png\" alt=\"Building an app with Couchbase Lite on Android with text search\" width=\"418\" height=\"751\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/image_2022-04-04_180309.png 418w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/image_2022-04-04_180309-167x300.png 167w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/image_2022-04-04_180309-300x539.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/image_2022-04-04_180309-11x20.png 11w\" sizes=\"auto, (max-width: 418px) 100vw, 418px\" \/><\/a><\/p>\n<h4><b>Revisar el c\u00f3digo\u00a0<\/b><\/h4>\n<p><span style=\"font-weight: 400\">Hay un archivo de c\u00f3digo que actualizamos para a\u00f1adir la l\u00f3gica de b\u00fasqueda a la aplicaci\u00f3n, Mainactivity.java.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Localice <\/span><b>Mainactivity.java <\/b><span style=\"font-weight: 400\">bajo el <\/span><i><span style=\"font-weight: 400\">java -&gt; com.example.rateit <\/span><\/i><span style=\"font-weight: 400\">y pegue el siguiente c\u00f3digo dentro de la clase <\/span><i><span style=\"font-weight: 400\">Actividad principal<\/span><\/i><span style=\"font-weight: 400\">. El nuevo c\u00f3digo se a\u00f1ade al ejemplo anterior de la parte 1: se encuentra en la l\u00ednea 8 y en las l\u00edneas 12-27 siguientes:<\/span><\/p>\n<pre class=\"decode-attributes:false lang:java decode:true\">public void receivedata( View view ) throws CouchbaseLiteException {\r\n\u00a0 \u00a0 Context context = this;\r\n\u00a0 \u00a0 CouchbaseLite.init(context);\r\n\u00a0 \u00a0 userArray.clear();\r\n\u00a0 \u00a0 DatabaseConfiguration config = new DatabaseConfiguration();\r\n\u00a0 \u00a0 config.setDirectory(context.getFilesDir().getAbsolutePath());\r\n\u00a0 \u00a0 Database database = null;\r\n\u00a0 \u00a0 File dbFile = new File(context.getFilesDir(), \"rateitdb\");\r\n\u00a0 \u00a0 try { database = new Database(\"rateitdb\", config); }\u00a0\r\n        catch (CouchbaseLiteException e) { e.printStackTrace(); }\r\n\r\n\u00a0 \u00a0 if (!dbFile.exists()) {\r\n\u00a0 \u00a0 \u00a0 \u00a0 database.createIndex(\"descFTSIndex\", IndexBuilder.fullTextIndex(FullTextIndexItem.property(\"URL\")));\r\n\u00a0 \u00a0 }\r\n\u00a0 \u00a0 SearchView search = (SearchView) findViewById(R.id.searchView);\r\n\u00a0 \u00a0 Expression searchExp = FullTextExpression.index(\"descFTSIndex\").match(String.valueOf(search.getQuery())) ;\r\n\u00a0 \u00a0 Query query = null;\r\n\u00a0 \u00a0 if (search.getQuery().toString().trim().isEmpty()) {\r\n\u00a0 \u00a0 \u00a0 \u00a0 query = (Query) QueryBuilder.select(SelectResult.all()).from(DataSource.database(database))\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 .where(Expression.property(\"to\").equalTo(Expression.string(\"rangana\"))\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 .and(Expression.property(\"type\").equalTo(Expression.string(\"received\"))));\r\n\u00a0 \u00a0 } else {\r\n\u00a0 \u00a0 \u00a0 \u00a0 query = (Query) QueryBuilder.select(SelectResult.all()).from(DataSource.database(database))\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 .where(Expression.property(\"to\").equalTo(Expression.string(\"rangana\"))\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 .and(Expression.property(\"type\").equalTo(Expression.string(\"received\")))\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 .and(searchExp));\r\n\u00a0 \u00a0 }\r\n\r\n\u00a0\u00a0\u00a0\u00a0int numrows = query.execute().allResults().size();\r\n\u00a0 \u00a0 Toast.makeText(getApplicationContext(), \"num rows:::\"+ numrows , Toast.LENGTH_LONG).show();\r\n\r\n\u00a0 \u00a0 try {\r\n\u00a0 \u00a0 \u00a0 \u00a0 query.execute().allResults().forEach(result -&gt; {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Dictionary thisDocsProps = result.getDictionary(0);\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 String sendto = thisDocsProps.getString(\"sendto\").trim();\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 String URL = thisDocsProps.getString(\"URL\").trim();\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 String rating = thisDocsProps.getString(\"rating\").trim();\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 float ratingstars = thisDocsProps.getFloat(\"ratingstars\");\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 int stars = (int) ratingstars;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 rating = String.valueOf(thisDocsProps.getFloat(\"ratingstars\"));\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 userArray.add(new User(sendto, URL, rating,ratingstars));\r\n\u00a0 \u00a0 \u00a0 \u00a0 });\r\n\u00a0 \u00a0 } catch (CouchbaseLiteException e) {\r\n\u00a0 \u00a0 \u00a0 \u00a0 e.printStackTrace();\r\n\u00a0 \u00a0 }\r\n\r\n\u00a0 \u00a0 userAdapter = new UserCustomAdapter(MainActivity.this, R.layout.customlayout, userArray);\r\n\u00a0 \u00a0 userList = (ListView) findViewById(R.id.listView);\r\n\u00a0 \u00a0 userList.setItemsCanFocus(false);\r\n\u00a0 \u00a0 userList.setAdapter(userAdapter);\r\n\r\n\u00a0 \u00a0 userList.setOnItemClickListener(new OnItemClickListener() {\r\n\u00a0 \u00a0 \u00a0 \u00a0 @Override\r\n\u00a0 \u00a0 \u00a0 \u00a0 public void onItemClick(AdapterView&lt;?&gt; parent, View v, final int position, long id) {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Log.i(\"List View Clicked\", \"**********\");\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Toast.makeText(MainActivity.this, \"List View Clicked:\" + position, Toast.LENGTH_LONG).show();\r\n\u00a0 \u00a0 \u00a0 \u00a0 }\r\n\u00a0 \u00a0 });\r\n\u00a0 \u00a0 database.close();\r\n}<\/pre>\n<p><span style=\"font-weight: 400\">En <\/span><i><span style=\"font-weight: 400\">receivedata <\/span><\/i><span style=\"font-weight: 400\">se activan cuando <\/span><b>SOLICITUDES DE CALIFICACI\u00d3N RECIBIDAS<\/b><span style=\"font-weight: 400\"> se pulsa. Muestra todas las solicitudes de calificaci\u00f3n recibidas ejecutando una consulta contra la base de datos local para obtener los registros.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Te permite poner una valoraci\u00f3n y crea un registro JSON con la valoraci\u00f3n. Cuando la <\/span><b>TARIFA<\/b><span style=\"font-weight: 400\"> se vuelve a escribir la solicitud en la base de datos con un tipo de documento de <\/span><i><span style=\"font-weight: 400\">clasificado<\/span><\/i><span style=\"font-weight: 400\">. Si el <\/span><b>BORRAR <\/b><span style=\"font-weight: 400\">el registro se elimina estableciendo el tiempo de vida del documento (<a href=\"https:\/\/www.couchbase.com\/blog\/es\/how-to-manage-ttl-with-couchbase-n1ql\/\">TTL<\/a>).<\/span><\/p>\n<p><span style=\"font-weight: 400\">Las nuevas secciones del c\u00f3digo funcionan del siguiente modo:<\/span><\/p>\n<ol>\n<li style=\"list-style-type: none\">\n<ol>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">En primer lugar, a\u00f1adimos un \u00edndice FTS si el archivo de base de datos no existe, lo que indica la primera entrada en la aplicaci\u00f3n.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Construir la expresi\u00f3n de b\u00fasqueda si el usuario introduce una cadena de b\u00fasqueda<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Construye la consulta utilizando la expresi\u00f3n de b\u00fasqueda y ejec\u00fatala<\/span><\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h4><b>Cableado del trazado<\/b><\/h4>\n<p><span style=\"font-weight: 400\">Es necesario a\u00f1adir el siguiente c\u00f3digo a <\/span><b>activity_main.xml<\/b><span style=\"font-weight: 400\">. A\u00f1ade el bot\u00f3n de b\u00fasqueda y su etiqueta:<\/span><\/p>\n<pre class=\"decode-attributes:false lang:xhtml decode:true\">&lt;SearchView\r\n\u00a0\u00a0\u00a0android:id=\"@+id\/searchView\"\r\n\u00a0\u00a0\u00a0android:layout_width=\"226dp\"\r\n\u00a0\u00a0\u00a0android:layout_height=\"40dp\"\r\n\u00a0\u00a0\u00a0android:layout_marginStart=\"4dp\"\r\n\u00a0\u00a0\u00a0android:layout_marginEnd=\"8dp\"\r\n\u00a0\u00a0\u00a0android:layout_marginBottom=\"4dp\"\r\n\u00a0\u00a0\u00a0android:background=\"@color\/white\"\r\n\u00a0\u00a0\u00a0app:layout_constraintBottom_toTopOf=\"@+id\/listView\"\r\n\u00a0\u00a0\u00a0app:layout_constraintEnd_toEndOf=\"parent\"\r\n\u00a0\u00a0\u00a0app:layout_constraintStart_toEndOf=\"@+id\/textView4\"\r\n\u00a0\u00a0\u00a0app:layout_constraintTop_toBottomOf=\"@+id\/Received\" \/&gt;\r\n\r\n&lt;TextView\r\n\u00a0\u00a0\u00a0android:id=\"@+id\/textView4\"\r\n\u00a0\u00a0\u00a0android:layout_width=\"158dp\"\r\n\u00a0\u00a0\u00a0android:layout_height=\"38dp\"\r\n\u00a0\u00a0\u00a0android:layout_marginStart=\"10dp\"\r\n\u00a0\u00a0\u00a0android:layout_marginBottom=\"4dp\"\r\n\u00a0\u00a0\u00a0android:background=\"#7BE67F\"\r\n\u00a0\u00a0\u00a0android:backgroundTint=\"#7BE67F\"\r\n\u00a0\u00a0\u00a0android:fontFamily=\"sans-serif-black\"\r\n\u00a0\u00a0\u00a0android:gravity=\"center\"\r\n\u00a0\u00a0\u00a0android:text=\"Search Text\"\r\n\u00a0\u00a0\u00a0android:textAllCaps=\"true\"\r\n\u00a0\u00a0\u00a0android:textStyle=\"bold\"\r\n\u00a0\u00a0\u00a0app:layout_constraintBottom_toTopOf=\"@+id\/listView\"\r\n\u00a0\u00a0\u00a0app:layout_constraintStart_toStartOf=\"parent\"\r\n\u00a0\u00a0\u00a0app:layout_constraintTop_toBottomOf=\"@+id\/Received\" \/&gt;<\/pre>\n<h4><b>Compilar el c\u00f3digo\u00a0<\/b><\/h4>\n<p><span style=\"font-weight: 400\">Una vez actualizado todo el c\u00f3digo, haga clic en <strong>Construir \u2192 Reconstruir proyecto<\/strong>. Cuando lo consiga, pulse <strong>Construir \u2192 Ejecutar<\/strong>.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Se te pedir\u00e1 que elijas el emulador la primera vez que ejecutes la aplicaci\u00f3n, por ejemplo, selecciona el NEXUS 5X API 25 como hice yo. Una vez completada la ejecuci\u00f3n, la p\u00e1gina principal tendr\u00e1 este aspecto:<\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/04\/image_2022-04-04_180205.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-12999\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/04\/image_2022-04-04_180205-509x1024.png\" alt=\"Building a mobile NoSQL app - screenshot with full-text search added\" width=\"509\" height=\"1024\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/image_2022-04-04_180205-509x1024.png 509w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/image_2022-04-04_180205-149x300.png 149w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/image_2022-04-04_180205-300x604.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/image_2022-04-04_180205-10x20.png 10w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/image_2022-04-04_180205.png 554w\" sizes=\"auto, (max-width: 509px) 100vw, 509px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400\">Ahora ha desplegado con \u00e9xito el c\u00f3digo en el emulador de su elecci\u00f3n. Cuando el usuario introduce una parte de la cadena URL, se muestran los resultados correspondientes.<\/span><\/p>\n<h4><b>Pr\u00f3ximos pasos<\/b><\/h4>\n<p><span style=\"font-weight: 400\">Esta es la segunda parte de la serie de blogs, <strong>Creaci\u00f3n de una aplicaci\u00f3n m\u00f3vil con Couchbase<\/strong>que se centra en una soluci\u00f3n m\u00f3vil completa de extremo a extremo. La primera parte mostraba c\u00f3mo crear una app que utiliza una base de datos Couchbase Lite incrustada para almacenar, recuperar y eliminar documentos almacenados localmente en el dispositivo.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">La segunda parte a\u00f1adi\u00f3 la posibilidad de realizar b\u00fasquedas basadas en texto, y la tercera y \u00faltima parte de esta serie a\u00f1adir\u00e1 la sincronizaci\u00f3n entre pares y la sincronizaci\u00f3n con una base de datos centralizada.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Entre los principales recursos a los que se hace referencia en este post figuran:<\/span><\/p>\n<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/es\/building-a-mobile-application-with-couchbase-part-1\/\" target=\"_blank\" rel=\"noopener\">Parte 1 - Creaci\u00f3n de una aplicaci\u00f3n m\u00f3vil con Couchbase<\/a><\/li>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/github.com\/sandykris123\/couchbasemobile\"><span style=\"font-weight: 400\">Repositorio de GitHub: incluye el c\u00f3digo del proyecto de la aplicaci\u00f3n Rateit.<\/span><\/a><\/li>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/www.couchbase.com\/blog\/es\/products\/mobile\/\"><span style=\"font-weight: 400\">Couchbase Mobile - informaci\u00f3n sobre el producto<\/span><\/a><\/li>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/3.0\/android\/quickstart.html\"><span style=\"font-weight: 400\">Documentaci\u00f3n de Couchbase Lite<\/span><\/a><\/li>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/developer.android.com\/studio\/\"><span style=\"font-weight: 400\">Android Studio<\/span><\/a><\/li>\n<\/ul>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>This multipart blog will help you build an end-to-end mobile application using the industry-leading features of Couchbase Lite. State of the art end-to-end, scalable and production-grade applications include the following features: An embedded database &#8211; storing data locally reduces network [&hellip;]<\/p>","protected":false},"author":66,"featured_media":13006,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[2370,7667,1810,2165],"tags":[1968],"ppma_author":[9038],"class_list":["post-12998","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-android","category-couchbase-lite","category-couchbase-mobile","category-full-text-search","tag-embedded-database"],"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>Building a Mobile Application with Couchbase - Part 2 - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Add full-text search to a Java-based mobile app using a Couchbase Lite embedded NoSQL database with Android Studio, part two in a Mobile app dev series.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/es\/building-a-mobile-application-with-couchbase-part-2\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Building a Mobile Application with Couchbase - Part 2\" \/>\n<meta property=\"og:description\" content=\"Add full-text search to a Java-based mobile app using a Couchbase Lite embedded NoSQL database with Android Studio, part two in a Mobile app dev series.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/building-a-mobile-application-with-couchbase-part-2\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-04-05T16:22:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T03:52:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/shutterstock_160559990-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1707\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Sandhya Krishnamurthy, Senior Solutions Engineer, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Sandhya Krishnamurthy, Senior Solutions Engineer, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/\"},\"author\":{\"name\":\"Sandhya Krishnamurthy, Senior Solutions Engineer, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/2d421ebd7ebf63e5491a9371909ab723\"},\"headline\":\"Building a Mobile Application with Couchbase &#8211; Part 2\",\"datePublished\":\"2022-04-05T16:22:52+00:00\",\"dateModified\":\"2025-06-14T03:52:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/\"},\"wordCount\":1085,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/shutterstock_160559990-scaled.jpg\",\"keywords\":[\"embedded database\"],\"articleSection\":[\"Android\",\"Couchbase Lite\",\"Couchbase Mobile\",\"Full-Text Search\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/\",\"name\":\"Building a Mobile Application with Couchbase - Part 2 - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/shutterstock_160559990-scaled.jpg\",\"datePublished\":\"2022-04-05T16:22:52+00:00\",\"dateModified\":\"2025-06-14T03:52:13+00:00\",\"description\":\"Add full-text search to a Java-based mobile app using a Couchbase Lite embedded NoSQL database with Android Studio, part two in a Mobile app dev series.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/shutterstock_160559990-scaled.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/shutterstock_160559990-scaled.jpg\",\"width\":2560,\"height\":1707},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Building a Mobile Application with Couchbase &#8211; Part 2\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/2d421ebd7ebf63e5491a9371909ab723\",\"name\":\"Sandhya Krishnamurthy, Senior Solutions Engineer, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/f4d7b0d0e3660d30cbd035db5621088e\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b2f1ee16accb4f849269e443ba5b34bc512dd5d425b4399779ebbaf3d1154557?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b2f1ee16accb4f849269e443ba5b34bc512dd5d425b4399779ebbaf3d1154557?s=96&d=mm&r=g\",\"caption\":\"Sandhya Krishnamurthy, Senior Solutions Engineer, Couchbase\"},\"description\":\"Sandhya Krishnamurthy is a technologist with a strong database development background and pre-sales experience. She is a part-time artist, part-time singer and full-time mom.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/sandhya-krishnamurthy\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Building a Mobile Application with Couchbase - Part 2 - The Couchbase Blog","description":"Add full-text search to a Java-based mobile app using a Couchbase Lite embedded NoSQL database with Android Studio, part two in a Mobile app dev series.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/es\/building-a-mobile-application-with-couchbase-part-2\/","og_locale":"es_MX","og_type":"article","og_title":"Building a Mobile Application with Couchbase - Part 2","og_description":"Add full-text search to a Java-based mobile app using a Couchbase Lite embedded NoSQL database with Android Studio, part two in a Mobile app dev series.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/building-a-mobile-application-with-couchbase-part-2\/","og_site_name":"The Couchbase Blog","article_published_time":"2022-04-05T16:22:52+00:00","article_modified_time":"2025-06-14T03:52:13+00:00","og_image":[{"width":2560,"height":1707,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/shutterstock_160559990-scaled.jpg","type":"image\/jpeg"}],"author":"Sandhya Krishnamurthy, Senior Solutions Engineer, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Sandhya Krishnamurthy, Senior Solutions Engineer, Couchbase","Est. reading time":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/"},"author":{"name":"Sandhya Krishnamurthy, Senior Solutions Engineer, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/2d421ebd7ebf63e5491a9371909ab723"},"headline":"Building a Mobile Application with Couchbase &#8211; Part 2","datePublished":"2022-04-05T16:22:52+00:00","dateModified":"2025-06-14T03:52:13+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/"},"wordCount":1085,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/shutterstock_160559990-scaled.jpg","keywords":["embedded database"],"articleSection":["Android","Couchbase Lite","Couchbase Mobile","Full-Text Search"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/","url":"https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/","name":"Building a Mobile Application with Couchbase - Part 2 - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/shutterstock_160559990-scaled.jpg","datePublished":"2022-04-05T16:22:52+00:00","dateModified":"2025-06-14T03:52:13+00:00","description":"Add full-text search to a Java-based mobile app using a Couchbase Lite embedded NoSQL database with Android Studio, part two in a Mobile app dev series.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/shutterstock_160559990-scaled.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/04\/shutterstock_160559990-scaled.jpg","width":2560,"height":1707},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/building-a-mobile-application-with-couchbase-part-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Building a Mobile Application with Couchbase &#8211; Part 2"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/2d421ebd7ebf63e5491a9371909ab723","name":"Sandhya Krishnamurthy, Ingeniera Superior de Soluciones, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/f4d7b0d0e3660d30cbd035db5621088e","url":"https:\/\/secure.gravatar.com\/avatar\/b2f1ee16accb4f849269e443ba5b34bc512dd5d425b4399779ebbaf3d1154557?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b2f1ee16accb4f849269e443ba5b34bc512dd5d425b4399779ebbaf3d1154557?s=96&d=mm&r=g","caption":"Sandhya Krishnamurthy, Senior Solutions Engineer, Couchbase"},"description":"Sandhya Krishnamurthy es una tecn\u00f3loga con una s\u00f3lida formaci\u00f3n en desarrollo de bases de datos y experiencia en preventa. Es artista a tiempo parcial, cantante a tiempo parcial y madre a tiempo completo.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/sandhya-krishnamurthy\/"}]}},"authors":[{"term_id":9038,"user_id":66,"is_guest":0,"slug":"sandhya-krishnamurthy","display_name":"Sandhya Krishnamurthy, Senior Solutions Engineer, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/b155c5b9bb4bc33f88ee8b7a387044ccc4e23146d3058e66ea7c3a82dd1f51c0?s=96&d=mm&r=g","author_category":"","last_name":"Krishnamurthy","first_name":"Sandhya","job_title":"","user_url":"","description":"Sandhya Krishnamurthy es una tecn\u00f3loga con una s\u00f3lida formaci\u00f3n en desarrollo de bases de datos y experiencia en preventa. Es artista a tiempo parcial, cantante a tiempo parcial y madre a tiempo completo."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/12998","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/66"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=12998"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/12998\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13006"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=12998"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=12998"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=12998"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=12998"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}