{"id":2903,"date":"2025-04-19T09:00:00","date_gmt":"2025-04-19T08:00:00","guid":{"rendered":"https:\/\/kumbiaphp.com\/blog\/?p=2903"},"modified":"2025-05-21T17:13:21","modified_gmt":"2025-05-21T16:13:21","slug":"buscador-avanzado-texto-completo-kumbiaphp-meilisearch","status":"publish","type":"post","link":"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/","title":{"rendered":"Buscador avanzado de texto completo para KumbiaPHP con Meilisearch"},"content":{"rendered":"\n<div style=\"text-align:center;\"><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/knyUp-Wleg4?si=b5TdpovBYkE4dCpm\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/div>\n\n\n\n<p class=\"\" data-start=\"271\" data-end=\"624\">Si est\u00e1s buscando implementar un <strong data-start=\"304\" data-end=\"374\">buscador avanzado de texto completo para KumbiaPHP con <a href=\"https:\/\/www.meilisearch.com\/\">Meilisearch<\/a><\/strong>, este art\u00edculo te mostrar\u00e1 c\u00f3mo hacerlo de manera sencilla, efectiva y escalable. Descubre c\u00f3mo aprovechar todo el potencial de Meilisearch en tus aplicaciones KumbiaPHP, ofreciendo a tus usuarios b\u00fasquedas r\u00e1pidas y resultados altamente relevantes.<\/p>\n<h2>\u00bfPor qu\u00e9 utilizar un buscador avanzado de texto completo para KumbiaPHP con Meilisearch?<\/h2>\n<p>Implementar un <strong data-start=\"739\" data-end=\"809\">buscador avanzado de texto completo para KumbiaPHP con Meilisearch<\/strong> permite llevar las capacidades de b\u00fasqueda de tus aplicaciones a otro nivel. Meilisearch es un motor de b\u00fasqueda r\u00e1pido, potente y de f\u00e1cil configuraci\u00f3n, ideal para aplicaciones modernas que requieren b\u00fasquedas en tiempo real, autocompletado y manejo de grandes vol\u00famenes de datos.<br data-start=\"1020\" data-end=\"1023\" \/>Adem\u00e1s, gracias a sus capacidades de b\u00fasqueda sem\u00e1ntica impulsada por inteligencia artificial, se pueden obtener resultados mucho m\u00e1s precisos incluso cuando las palabras de b\u00fasqueda no coinciden exactamente con los t\u00e9rminos indexados.<\/p>\n<h2>Requisitos<\/h2>\n<p>Antes de comenzar a integrar un <strong data-start=\"2097\" data-end=\"2167\">buscador avanzado de texto completo para KumbiaPHP con Meilisearch<\/strong>, verifica que tu entorno cumpla con los siguientes requisitos b\u00e1sicos:<\/p>\n<ul>\n<li>\n<p>Tener una aplicaci\u00f3n funcionando con <strong><a href=\"https:\/\/kumbiaphp.com\/blog\/manuales-y-descargas\/\">KumbiaPHP 1.2<\/a> o superior<\/strong>.<\/p>\n<\/li>\n<li>\n<p>Tener <strong><a href=\"_wp_link_placeholder\" data-wplink-edit=\"true\">PHP 8.0<\/a> o superior<\/strong>.<\/p>\n<\/li>\n<li>\n<p>Tener acceso al servidor o contenedor donde correr\u00e1 <strong>Meilisearch<\/strong>.<\/p>\n<\/li>\n<li>\n<p>Instalar el cliente de Meilisearch para PHP con Composer:<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"language-bash\" data-line=\"\">composer require meilisearch\/meilisearch-php \\\nguzzlehttp\/guzzle \\\nhttp-interop\/http-factory-guzzle:^1.0<\/code><\/pre>\n<ul>\n<li>\n<p>Instalar el nuevo ActiveRecord de KumbiaPHP si a\u00fan no lo tienes:<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"language-bash\" data-line=\"\">composer require kumbia\/activerecord\n<\/code><\/pre>\n<blockquote>\n<p>Este nuevo ActiveRecord es un componente externo que puedes usar en cualquier proyecto PHP, y es requerido para que los modelos soporten los callbacks usados por el trait MeilisearchSearchable.<\/p>\n<\/blockquote>\n<h2 id=\"configuraci%C3%B3n-del-cliente-meilisearch-singleton\" class=\"code-line\" dir=\"auto\" data-line=\"31\">Configuraci\u00f3n del Cliente Meilisearch<\/h2>\n<p class=\"code-line\" dir=\"auto\" data-line=\"33\">Crea el archivo <em>default\/app\/config\/meilisearch.php<\/em> con la siguiente estructura:<\/p>\n\n\n\n<!--more-->\n\n\n\n<pre class=\"wp-block-code language-php\"><code class=\"\" data-line=\"\">&lt;?php\n\/**\n * MeiliSearch configuration file.\n *\n * This file contains the configuration settings for connecting to MeiliSearch.\n *\/\nreturn &#091;\n    &#039;host&#039; =&gt; &#039;http:\/\/127.0.0.1:7700&#039;, \/\/ Change the host\n    &#039;api_key&#039; =&gt; &#039;&#039;, \/\/ Change the key\n];\n<\/code><\/pre>\n\n\n\n<h2 id=\"integrando-meilisearch-con-el-trait-meilisearchsearchabletrait\" class=\"code-line\" dir=\"auto\" data-line=\"63\">Trait MeilisearchSearchableTrait<\/h2>\n<p class=\"code-line\" dir=\"auto\" data-line=\"65\">Crea el archivo&nbsp;<em>default\/app\/libs\/meilisearch_searchable_trait.php<\/em> con el siguiente c\u00f3digo:<\/p>\n\n\n\n<pre class=\"wp-block-code language-php\"><code class=\"\" data-line=\"\">&lt;?php\n\nuse Meilisearch\\Client;\n\n\/**\n * Trait MeilisearchSearchableTrait\n *\/\ntrait MeilisearchSearchableTrait\n{\n    \/**\n     * MeiliSearch client instance.\n     *\/\n    protected static ?Client $_meiliClient = null;\n\n    \/**\n     * Retrieves the MeiliSearch client instance.\n     *\/\n    protected static function getMeiliClient(): Client\n    {\n        if (null !== self::$_meiliClient) {\n            return self::$_meiliClient;\n        }\n\n        $config = \\Config::read(&#039;meilisearch&#039;);\n        if (!$config || !is_array($config)) {\n            throw new \\RuntimeException(&#039;MeiliSearch configuration not found in config file.&#039;);\n        }\n        $host   = $config&#091;&#039;host&#039;] ?? &#039;http:\/\/localhost:7700&#039;;\n        $apiKey = $config&#091;&#039;api_key&#039;] ?? &#039;&#039;;\n\n        return self::$_meiliClient = new Client($host, $apiKey);\n    }\n\n    \/**\n     * Returns the index name. By default it returns the table name provided by the model.\n     *\/\n    protected static function searchableAs(): string\n    {\n        return static::getTable();\n    }\n\n    \/**\n     * Converts the model instance to an array for indexing.\n     *\/\n    abstract protected function toSearchArray(): array;\n\n    \/**\n     * Callback executed after a model is created.\n     * The new record is automatically added to the MeiliSearch index.\n     *\/\n    protected function _afterCreate(): void\n    {\n        self::getMeiliClient()\n            -&gt;index(static::searchableAs())\n            -&gt;addDocuments(&#091;$this-&gt;toSearchArray()]);\n    }\n\n    \/**\n     * Callback executed after a model is updated.\n     * The updated record is synchronized in the MeiliSearch index.\n     *\/\n    protected function _afterUpdate(): void\n    {\n        self::getMeiliClient()\n            -&gt;index(static::searchableAs())\n            -&gt;updateDocuments(&#091;$this-&gt;toSearchArray()]);\n    }\n\n    \/**\n     * Deletes a record and synchronizes the deletion with the MeiliSearch index.\n     *\/\n    public static function delete($pk): bool\n    {\n        $deleted = parent::delete($pk);\n\n        if ($deleted) {\n            self::getMeiliClient()\n                -&gt;index(static::searchableAs())\n                -&gt;deleteDocument($pk);\n        }\n\n        return $deleted;\n    }\n\n    \/**\n     * Performs a search query on the MeiliSearch index.\n     *\/\n    public static function search(string $query, array $options = &#091;]): array\n    {\n        $results = self::getMeiliClient()\n            -&gt;index(static::searchableAs())\n            -&gt;search($query, $options);\n\n        return $results-&gt;getHits();\n    }\n\n    \/**\n     * Bulk-imports existing records into the MeiliSearch index.\n     *\/\n    public static function importToMeilisearch(int $chunkSize = 500): void\n    {\n        $offset = 0;\n\n        do {\n            $records = static::filter(&quot;LIMIT $chunkSize OFFSET $offset&quot;);\n            $data    = &#091;];\n\n            foreach ($records as $record) {\n                $data&#091;] = $record-&gt;toSearchArray();\n            }\n\n            if (!empty($data)) {\n                self::getMeiliClient()\n                    -&gt;index(static::searchableAs())\n                    -&gt;addDocuments($data);\n            }\n\n            $offset += $chunkSize;\n        } while (count($records) === $chunkSize);\n    }\n}\n<\/code><\/pre>\n\n\n\n<h2>Ventajas del Trait MeilisearchSearchable<\/h2>\n<ul>\n<li>\n<p><strong>Integraci\u00f3n simple<\/strong>: Reutiliza f\u00e1cilmente la funcionalidad en m\u00faltiples modelos.<\/p>\n<\/li>\n<li>\n<p><strong>Automatizaci\u00f3n<\/strong>: Mantiene sincronizados autom\u00e1ticamente tus modelos con el \u00edndice de b\u00fasqueda.<\/p>\n<\/li>\n<li>\n<p><strong>Flexibilidad<\/strong>: Puedes personalizar f\u00e1cilmente el comportamiento de b\u00fasqueda por cada modelo.<\/p>\n<\/li>\n<li><strong>Inteligencia Artificial:<\/strong> Soporte para b\u00fasqueda sem\u00e1ntica mediante integraci\u00f3n con IA (OpenAI u otros proveedores).<\/li>\n<\/ul>\n<h2 class=\"\" data-start=\"3331\" data-end=\"3432\">C\u00f3mo utilizar en la pr\u00e1ctica un buscador avanzado de texto completo para KumbiaPHP con Meilisearch<\/h2>\n\n\n\n<h3 data-pm-slice=\"1 1 []\">Paso 1: Implementaci\u00f3n en Modelos<\/h3>\n<p>A continuaci\u00f3n, integra el trait en tus modelos que extiendan de LiteRecord:<\/p>\n<h4>Ejemplo con Modelo Product<\/h4>\n\n\n\n<pre class=\"wp-block-code language-php\"><code class=\"\" data-line=\"\">&lt;?php\n\nuse Kumbia\\ActiveRecord\\LiteRecord;\n\nclass Product extends LiteRecord\n{\n    use MeilisearchSearchableTrait;\n\n    protected static $table = &#039;products&#039;;\n\n    protected function toSearchArray(): array\n    {\n        return &#091;\n            &#039;id&#039; =&gt; $this-&gt;id,\n            &#039;name&#039; =&gt; $this-&gt;name,\n            &#039;description&#039; =&gt; $this-&gt;description,\n            &#039;price&#039; =&gt; $this-&gt;price,\n        ];\n    }\n}<\/code><\/pre>\n\n\n\n<h4 data-pm-slice=\"1 1 []\">Ejemplo con Modelo Article<\/h4>\n\n\n\n<pre class=\"wp-block-code language-php\"><code class=\"\" data-line=\"\">&lt;?php\n\nuse Kumbia\\ActiveRecord\\LiteRecord;\n\nclass Article extends LiteRecord\n{\n    use MeilisearchSearchableTrait;\n\n    protected static $table = &#039;articles&#039;;\n\n    protected function toSearchArray(): array\n    {\n        return &#091;\n            &#039;id&#039; =&gt; $this-&gt;id,\n            &#039;title&#039; =&gt; $this-&gt;title,\n            &#039;content&#039; =&gt; $this-&gt;content,\n            &#039;author&#039; =&gt; $this-&gt;author,\n        ];\n    }\n}<\/code><\/pre>\n\n\n\n<p data-pm-slice=\"1 1 []\">Una vez implementado el trait en tus modelos, realizar b\u00fasquedas ser\u00e1 simple y eficaz. Estos ejemplos pr\u00e1cticos ilustran claramente c\u00f3mo aprovechar tu nuevo <strong data-start=\"3591\" data-end=\"3661\">buscador avanzado de texto completo para KumbiaPHP con Meilisearch<\/strong>.<\/p>\n<h3 data-pm-slice=\"1 1 []\">Paso 2: Realizar b\u00fasquedas f\u00e1cilmente<\/h3>\n<p>Ahora puedes realizar b\u00fasquedas en tus modelos:<\/p>\n\n\n\n<pre class=\"wp-block-code language-php\"><code class=\"\" data-line=\"\">\/\/ Buscar productos\n$products = Product::search(&#039;zapatos deportivos&#039;, &#091;&#039;limit&#039; =&gt; 10]);\n\n\/\/ Buscar art\u00edculos\n$articles = Article::search(&#039;tecnolog\u00eda&#039;, &#091;&#039;limit&#039; =&gt; 5]);<\/code><\/pre>\n\n\n\n<h3 data-pm-slice=\"1 1 []\">Paso 3: Importar datos existentes<\/h3>\n<p>Si ya tienes datos almacenados en tu base de datos, puedes importarlos f\u00e1cilmente:<\/p>\n\n\n\n<pre class=\"wp-block-code language-php\"><code class=\"\" data-line=\"\">Product::importToMeilisearch();\nArticle::importToMeilisearch();<\/code><\/pre>\n\n\n\n<h2 data-pm-slice=\"1 1 []\">Ejemplo de Mielisearch con Controlador y Vista en KumbiaPHP<\/h2>\n<h3>Paso 1: Crea el controlador<\/h3>\n<p>Controlador: <em>app\/controllers\/products_controller.php<\/em><\/p>\n\n\n\n<pre class=\"wp-block-code language-php\"><code class=\"\" data-line=\"\">class ProductsController extends AppController\n{\n    public function search()\n    {\n        if (Input::hasPost(&#039;query&#039;)) {\n            $this-&gt;results = Product::search(Input::post(&#039;query&#039;));\n        }\n    }\n}<\/code><\/pre>\n\n\n\n<h3 data-pm-slice=\"1 1 []\">Paso 2: Crea la vista<\/h3>\n<p data-pm-slice=\"1 1 []\">Vista: <em>app\/views\/products\/search.phtml<\/em><\/p>\n\n\n\n<pre class=\"wp-block-code language-php\"><code class=\"\" data-line=\"\">&lt;h1&gt;Buscar productos&lt;\/h1&gt;\n\n&lt;?php View::content(); ?&gt;\n\n&lt;?= Form::open(); ?&gt;\n    &lt;?= Form::text(&#039;query&#039;, &#039;placeholder=&quot;Buscar...&quot;&#039;) ?&gt;\n    &lt;?= Form::submit(&#039;Buscar&#039;) ?&gt;\n&lt;?= Form::close(); ?&gt;\n\n&lt;?php if (empty($results) &amp;&amp; Input::post(&#039;query&#039;)): ?&gt;\n    &lt;p&gt;No se encontraron resultados.&lt;\/p&gt;\n    &lt;?php return 1 ?&gt;\n&lt;?php endif; ?&gt;\n\n&lt;h2&gt;Resultados&lt;\/h2&gt;\n&lt;ul&gt;\n    &lt;?php foreach ($results as $product): ?&gt;\n        &lt;li&gt;\n            &lt;strong&gt;&lt;?= h($product&#091;&#039;name&#039;]) ?&gt;&lt;\/strong&gt;&lt;br&gt;\n            &lt;?= h($product&#091;&#039;description&#039;]) ?&gt;&lt;br&gt;\n            Precio: $&lt;?= h($product&#091;&#039;price&#039;]) ?&gt;\n        &lt;\/li&gt;\n    &lt;?php endforeach; ?&gt;\n&lt;\/ul&gt;\n<\/code><\/pre>\n\n\n\n<p data-pm-slice=\"1 1 []\">La combinaci\u00f3n de KumbiaPHP con Meilisearch a trav\u00e9s del trait MeilisearchSearchable te permite ofrecer una experiencia superior en b\u00fasquedas a tus usuarios. Con la posibilidad de usar IA para b\u00fasquedas sem\u00e1nticas, la calidad de los resultados se eleva a\u00fan m\u00e1s. La integraci\u00f3n es simple, escalable y potente, haciendo que valga la pena el esfuerzo inicial.<\/p>\n<p>\u00a1Prueba esta integraci\u00f3n y lleva tus b\u00fasquedas al siguiente nivel con KumbiaPHP y Meilisearch!<\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":11,"featured_media":2924,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[147,9],"tags":[148,149,36],"class_list":["post-2903","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","category-tutoriales-y-screencast","tag-ai","tag-buscador","tag-ejemplos"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Buscador avanzado de texto completo para KumbiaPHP con Meilisearch - Framework PHP<\/title>\n<meta name=\"description\" content=\"Descubre c\u00f3mo implementar un buscador avanzado de texto completo para KumbiaPHP con Meilisearch. Potencia tus aplicaciones con b\u00fasquedas r\u00e1pidas, facetadas, sem\u00e1nticas y geogr\u00e1ficas. \u00a1F\u00e1cil, escalable y eficiente!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Buscador avanzado de texto completo para KumbiaPHP con Meilisearch - Framework PHP\" \/>\n<meta property=\"og:description\" content=\"Descubre c\u00f3mo implementar un buscador avanzado de texto completo para KumbiaPHP con Meilisearch. Potencia tus aplicaciones con b\u00fasquedas r\u00e1pidas, facetadas, sem\u00e1nticas y geogr\u00e1ficas. \u00a1F\u00e1cil, escalable y eficiente!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/\" \/>\n<meta property=\"og:site_name\" content=\"KumbiaPHP Framework PHP en espa\u00f1ol\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kumbia.fw\" \/>\n<meta property=\"article:published_time\" content=\"2025-04-19T08:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-21T16:13:21+00:00\" \/>\n<meta name=\"author\" content=\"HenryStivens\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@henrystivens\" \/>\n<meta name=\"twitter:site\" content=\"@kumbiaphp\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"HenryStivens\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/\"},\"author\":{\"name\":\"HenryStivens\",\"@id\":\"https:\/\/kumbiaphp.com\/blog\/#\/schema\/person\/b6f7cc13b1eaec9ae9e243b4385fc321\"},\"headline\":\"Buscador avanzado de texto completo para KumbiaPHP con Meilisearch\",\"datePublished\":\"2025-04-19T08:00:00+00:00\",\"dateModified\":\"2025-05-21T16:13:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/\"},\"wordCount\":586,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kumbiaphp.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2025\/04\/logo.svg\",\"keywords\":[\"AI\",\"buscador\",\"ejemplos\"],\"articleSection\":[\"AI\",\"Tutoriales y screencast\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/\",\"url\":\"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/\",\"name\":\"Buscador avanzado de texto completo para KumbiaPHP con Meilisearch - Framework PHP\",\"isPartOf\":{\"@id\":\"https:\/\/kumbiaphp.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2025\/04\/logo.svg\",\"datePublished\":\"2025-04-19T08:00:00+00:00\",\"dateModified\":\"2025-05-21T16:13:21+00:00\",\"description\":\"Descubre c\u00f3mo implementar un buscador avanzado de texto completo para KumbiaPHP con Meilisearch. Potencia tus aplicaciones con b\u00fasquedas r\u00e1pidas, facetadas, sem\u00e1nticas y geogr\u00e1ficas. \u00a1F\u00e1cil, escalable y eficiente!\",\"breadcrumb\":{\"@id\":\"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/#primaryimage\",\"url\":\"https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2025\/04\/logo.svg\",\"contentUrl\":\"https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2025\/04\/logo.svg\",\"width\":300,\"height\":300,\"caption\":\"Meilisearch\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/kumbiaphp.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Buscador avanzado de texto completo para KumbiaPHP con Meilisearch\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kumbiaphp.com\/blog\/#website\",\"url\":\"https:\/\/kumbiaphp.com\/blog\/\",\"name\":\"KumbiaPHP Framework PHP en espa\u00f1ol\",\"description\":\"Web &amp; app MVC PHP framework\",\"publisher\":{\"@id\":\"https:\/\/kumbiaphp.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kumbiaphp.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kumbiaphp.com\/blog\/#organization\",\"name\":\"KumbiaPHP Framework PHP en espa\u00f1ol\",\"url\":\"https:\/\/kumbiaphp.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/kumbiaphp.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2015\/02\/logo.png\",\"contentUrl\":\"https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2015\/02\/logo.png\",\"width\":432,\"height\":50,\"caption\":\"KumbiaPHP Framework PHP en espa\u00f1ol\"},\"image\":{\"@id\":\"https:\/\/kumbiaphp.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kumbia.fw\",\"https:\/\/x.com\/kumbiaphp\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kumbiaphp.com\/blog\/#\/schema\/person\/b6f7cc13b1eaec9ae9e243b4385fc321\",\"name\":\"HenryStivens\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/b72eb6560d7b6068354db3428a9585f4c18759e8a799af6f27a508078457e256?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/b72eb6560d7b6068354db3428a9585f4c18759e8a799af6f27a508078457e256?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/b72eb6560d7b6068354db3428a9585f4c18759e8a799af6f27a508078457e256?s=96&d=mm&r=g\",\"caption\":\"HenryStivens\"},\"description\":\"Dedicated to building robust, user-centered software solutions with clean, maintainable code. Passionate about innovative technology, gaming, and gourmet coffee.\",\"sameAs\":[\"https:\/\/x.com\/henrystivens\"],\"url\":\"https:\/\/kumbiaphp.com\/blog\/author\/henrystivens\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Buscador avanzado de texto completo para KumbiaPHP con Meilisearch - Framework PHP","description":"Descubre c\u00f3mo implementar un buscador avanzado de texto completo para KumbiaPHP con Meilisearch. Potencia tus aplicaciones con b\u00fasquedas r\u00e1pidas, facetadas, sem\u00e1nticas y geogr\u00e1ficas. \u00a1F\u00e1cil, escalable y eficiente!","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:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/","og_locale":"es_ES","og_type":"article","og_title":"Buscador avanzado de texto completo para KumbiaPHP con Meilisearch - Framework PHP","og_description":"Descubre c\u00f3mo implementar un buscador avanzado de texto completo para KumbiaPHP con Meilisearch. Potencia tus aplicaciones con b\u00fasquedas r\u00e1pidas, facetadas, sem\u00e1nticas y geogr\u00e1ficas. \u00a1F\u00e1cil, escalable y eficiente!","og_url":"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/","og_site_name":"KumbiaPHP Framework PHP en espa\u00f1ol","article_publisher":"https:\/\/www.facebook.com\/kumbia.fw","article_published_time":"2025-04-19T08:00:00+00:00","article_modified_time":"2025-05-21T16:13:21+00:00","author":"HenryStivens","twitter_card":"summary_large_image","twitter_creator":"@henrystivens","twitter_site":"@kumbiaphp","twitter_misc":{"Escrito por":"HenryStivens","Tiempo de lectura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/#article","isPartOf":{"@id":"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/"},"author":{"name":"HenryStivens","@id":"https:\/\/kumbiaphp.com\/blog\/#\/schema\/person\/b6f7cc13b1eaec9ae9e243b4385fc321"},"headline":"Buscador avanzado de texto completo para KumbiaPHP con Meilisearch","datePublished":"2025-04-19T08:00:00+00:00","dateModified":"2025-05-21T16:13:21+00:00","mainEntityOfPage":{"@id":"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/"},"wordCount":586,"commentCount":0,"publisher":{"@id":"https:\/\/kumbiaphp.com\/blog\/#organization"},"image":{"@id":"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/#primaryimage"},"thumbnailUrl":"https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2025\/04\/logo.svg","keywords":["AI","buscador","ejemplos"],"articleSection":["AI","Tutoriales y screencast"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/","url":"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/","name":"Buscador avanzado de texto completo para KumbiaPHP con Meilisearch - Framework PHP","isPartOf":{"@id":"https:\/\/kumbiaphp.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/#primaryimage"},"image":{"@id":"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/#primaryimage"},"thumbnailUrl":"https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2025\/04\/logo.svg","datePublished":"2025-04-19T08:00:00+00:00","dateModified":"2025-05-21T16:13:21+00:00","description":"Descubre c\u00f3mo implementar un buscador avanzado de texto completo para KumbiaPHP con Meilisearch. Potencia tus aplicaciones con b\u00fasquedas r\u00e1pidas, facetadas, sem\u00e1nticas y geogr\u00e1ficas. \u00a1F\u00e1cil, escalable y eficiente!","breadcrumb":{"@id":"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/#primaryimage","url":"https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2025\/04\/logo.svg","contentUrl":"https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2025\/04\/logo.svg","width":300,"height":300,"caption":"Meilisearch"},{"@type":"BreadcrumbList","@id":"https:\/\/kumbiaphp.com\/blog\/2025\/04\/19\/buscador-avanzado-texto-completo-kumbiaphp-meilisearch\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/kumbiaphp.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Buscador avanzado de texto completo para KumbiaPHP con Meilisearch"}]},{"@type":"WebSite","@id":"https:\/\/kumbiaphp.com\/blog\/#website","url":"https:\/\/kumbiaphp.com\/blog\/","name":"KumbiaPHP Framework PHP en espa\u00f1ol","description":"Web &amp; app MVC PHP framework","publisher":{"@id":"https:\/\/kumbiaphp.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kumbiaphp.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/kumbiaphp.com\/blog\/#organization","name":"KumbiaPHP Framework PHP en espa\u00f1ol","url":"https:\/\/kumbiaphp.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/kumbiaphp.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2015\/02\/logo.png","contentUrl":"https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2015\/02\/logo.png","width":432,"height":50,"caption":"KumbiaPHP Framework PHP en espa\u00f1ol"},"image":{"@id":"https:\/\/kumbiaphp.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kumbia.fw","https:\/\/x.com\/kumbiaphp"]},{"@type":"Person","@id":"https:\/\/kumbiaphp.com\/blog\/#\/schema\/person\/b6f7cc13b1eaec9ae9e243b4385fc321","name":"HenryStivens","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/b72eb6560d7b6068354db3428a9585f4c18759e8a799af6f27a508078457e256?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/b72eb6560d7b6068354db3428a9585f4c18759e8a799af6f27a508078457e256?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b72eb6560d7b6068354db3428a9585f4c18759e8a799af6f27a508078457e256?s=96&d=mm&r=g","caption":"HenryStivens"},"description":"Dedicated to building robust, user-centered software solutions with clean, maintainable code. Passionate about innovative technology, gaming, and gourmet coffee.","sameAs":["https:\/\/x.com\/henrystivens"],"url":"https:\/\/kumbiaphp.com\/blog\/author\/henrystivens\/"}]}},"jetpack_featured_media_url":"https:\/\/kumbiaphp.com\/blog\/wp-content\/uploads\/2025\/04\/logo.svg","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/kumbiaphp.com\/blog\/wp-json\/wp\/v2\/posts\/2903","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kumbiaphp.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kumbiaphp.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kumbiaphp.com\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/kumbiaphp.com\/blog\/wp-json\/wp\/v2\/comments?post=2903"}],"version-history":[{"count":27,"href":"https:\/\/kumbiaphp.com\/blog\/wp-json\/wp\/v2\/posts\/2903\/revisions"}],"predecessor-version":[{"id":2940,"href":"https:\/\/kumbiaphp.com\/blog\/wp-json\/wp\/v2\/posts\/2903\/revisions\/2940"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kumbiaphp.com\/blog\/wp-json\/wp\/v2\/media\/2924"}],"wp:attachment":[{"href":"https:\/\/kumbiaphp.com\/blog\/wp-json\/wp\/v2\/media?parent=2903"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kumbiaphp.com\/blog\/wp-json\/wp\/v2\/categories?post=2903"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kumbiaphp.com\/blog\/wp-json\/wp\/v2\/tags?post=2903"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}