=== CelerSearch - Lightning Fast Search with Meilisearch === Contributors: darkog, celersearch Tags: search, meilisearch, typesense, instant search, autocomplete Requires at least: 6.0 Tested up to: 7.0 Requires PHP: 8.1 Stable tag: 1.4.1 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html ⚡ Instant, typo-tolerant WordPress search powered by Meilisearch. Autocomplete, highlighting, faceted filters, WooCommerce-ready. == Description == CelerSearch routes WordPress search through Meilisearch. Sub-50ms responses, typo tolerance, autocomplete, highlighting, and full WooCommerce support — with an admin UI built for day-to-day use, not just setup. = 🔍 Search = * Millisecond results on any site size * Typo tolerance and stemming out of the box * Live autocomplete as users type * Match highlighting on titles and excerpts * Category, tag, and custom-taxonomy filtering * Custom search results pages via Views + block/shortcode * Native WordPress search fallback when Meilisearch is unreachable = 🗂 Indexing = * Posts, pages, any custom post type * WooCommerce products (including variations) and orders * Real-time sync on publish, update, trash, and watched meta changes * Manual rebuild with configurable batch size * Per-index searchable, filterable, sortable attributes + synonyms — all editable in the admin * Content splitting for long posts (configurable; Meilisearch deduplicates results) = 🌐 Where search runs = * Frontend site search (replace the default results page with a custom View) * Admin list search (posts, products, media) * REST API search (headless/decoupled setups) * AJAX-faceted WooCommerce shop & archive filters = 🎯 Use cases = * **WooCommerce stores with thousands of orders** — native admin order search slows to a crawl and misses matches as the orders table grows. Enable the "WooCommerce Admin Orders Search" area and lookups stay instant at any scale. * **Product catalogs with rich attributes** — drive shop and category archives with AJAX-faceted filters for color, size, brand, price, plus typo-tolerant keyword search. * **Content-heavy sites (news, blogs, documentation)** — replace the frontend search with live autocomplete and fuzzy matching so readers find posts by typing a few characters. * **Custom post types at scale** — directories, job boards, listings. Native WP search is a slow `LIKE '%…%'` across a handful of columns; CelerSearch indexes every field and ranks by relevance. = 🧑‍💻 Developer-friendly = * 40+ filter hooks across indexing, search, and results * Extend with your own index types (`celersearch_supported_indices`) * Custom search-area types (`celersearch_area_types`) for BuddyPress, LearnDash, etc. * Taxonomy-aware queries translate WP_Query `tax_query` to the engine filter syntax Full documentation at [docs.celersearch.com](https://docs.celersearch.com). = Requirements = * WordPress 6.0+ * PHP 8.1+ * A Meilisearch instance — self-host on your VPS, or get a managed one at [celersearch.com](https://celersearch.com/) from $10/mo. = 🚀 Getting started = After activation a welcome notice points you to the setup flow: 1. Stand up Meilisearch — self-host ([guide](https://www.meilisearch.com/docs/learn/self_hosted/getting_started_with_self_hosted_meilisearch)) or use [celersearch.com](https://celersearch.com/) 2. Add the service under **CelerSearch → Services** 3. Create an index under **CelerSearch → Indices** and rebuild it 4. Enable the relevant search area under **CelerSearch → Settings** == Installation == 1. Upload the `celersearch` folder to the `/wp-content/plugins/` directory 2. Activate the plugin through the 'Plugins' menu in WordPress 3. Configure your MeiliSearch service under CelerSearch > Services 4. Create indices and configure search areas == Frequently Asked Questions == = Do I need my own Meilisearch server? = Yes. Two options: * **Self-host** on your VPS — free, but you handle updates, backups, and SSL. [Upstream guide](https://www.meilisearch.com/docs/learn/self_hosted/getting_started_with_self_hosted_meilisearch). * **Managed** at [celersearch.com](https://celersearch.com/) — from $10/mo, provisioned in seconds, updates and backups handled. = Does it work with WooCommerce? = Yes. Dedicated Products and Orders index types, plus AJAX-faceted shop & archive filters. = Will it slow down my site? = No. Search queries go to Meilisearch, which responds in under 50ms. = What if Meilisearch goes down? = With fallback enabled (default), search reverts to native WordPress search automatically. = Can I disable content splitting for large posts? = Yes. Open **CelerSearch → Indices**, edit the index, and toggle **Content Splitting** (chunk size is configurable per index). For site-wide overrides you can also set these in `wp-config.php`: `define( 'CELERSEARCH_SPLIT_POSTS', false );` `define( 'CELERSEARCH_CONTENT_MAX_SIZE', 3000 );` Rebuild the affected indices after changing either. = How do I replace the default search results page? = 1. **CelerSearch → Views** — create a View, pick an index, configure behavior. 2. Create a WordPress page and embed the View via the CelerSearch block or `[celersearch]` shortcode. 3. **CelerSearch → Settings → Search Areas** — on "WordPress Public Search", enable "Replace Search Results Page" and pick the page. = What's the difference between Search Areas and Views? = They solve different problems and often work together. * **Search Areas** (Settings → Search Areas) intercept WordPress search *where it already happens* — the frontend search, admin list search, REST API search, WooCommerce shop filters — and route it through Meilisearch. No template changes; you pick which index each context uses. * **Views** (CelerSearch → Views) are a UI primitive for building custom search experiences you embed via the CelerSearch block or the `[celersearch]` shortcode. A View bundles the input, autocomplete, filters, results layout, and sorting as one configurable unit you drop onto any page or widget area. Typical setup uses both: create a View-powered search page, then enable "Replace Search Results Page" on the WordPress Public Search area and point it at that page — the Search Area handles the interception, the View renders the page. == Screenshots == 1. Service create page 2. Services index page 3. Index create page 4. Indices index page 5. Index settings modal 6. Index browser - See what's in the index and preview the documents structure 7. Views creation and embed to public page 8. Plugin settings 9. Search Area configuration - WooCommerce product search 10. Search Area configuration - Swap public WordPress search with CelerSearch based search == Changelog == = 1.4.1 = * Add per-item Import/Export for Indices, Services and Settings — JSON envelope format, slug/name dedup on import, API keys redacted by default with explicit opt-in to embed * Add WP-CLI commands: `wp celersearch index|service|settings export|import` * Fix: `wp celersearch index list|info|clear` no longer fatals on the success path (used a non-existent `is_success()` helper) = 1.4.0 = * Add first-run welcome notice * Add host-options picker to the Services empty state and Create Service modal * Add per-index settings UI for searchable, filterable, sortable attributes and synonyms * Add Index Browser modal with in-engine search, filters, and index configuration * Add row-level action menus, toast notifications, reusable confirmation modals, and admin footer polish * Improve: frontend search-view and WooCommerce shop-filter typography now scales with the theme's font size * Fix: MultiSelect dropdowns inside modals no longer get clipped by the modal edge * Fix: Indices page no longer fatals when an index references a deleted service * Fix: admin assets enqueue with exact page-slug match, avoiding leakage onto third-party admin pages * Fix: admin modals correctly center and align with the WP admin content area * Tested and ready for WordPress 7.0 = 1.3.1 = * Fix: Defer translation of index type labels to avoid the "translation loading triggered too early" notice on WordPress 6.7+ = 1.3.0 = * Fix: Ensure Meilisearch indexes are created with correct primary key and settings before first sync * Fix: Provision index with filterable attributes on creation, preventing empty search results * Fix: Detect and automatically clean up stuck Action Scheduler sync jobs * Add content splitting as a per-index setting (enable/disable and max record size) * Add sync error logging visible to admins via AJAX endpoints * Improve documents column to clarify indexed vs local counts when content splitting is active = 1.2.4 = * Fix: URL based search query does not persist in search page * Fix: CelerSearch menu registers for non-admin users too in wp-admin = 1.2.3 = * Respect initial_display setting when search input is cleared in Views = 1.2.2 = * Add sorting option in Views and Search areas = 1.2.1 = * Fix post splitting / deduplication = 1.2.0 = * Add on-demand service health checks from Services page * Add index document count stats on Indices page * Fix deleting an index now also removes it from the remote search engine * Improve service creation form and status display = 1.1.3 = * Minor bug fix related to product indexing = 1.1.2 = * Improve bundling process * Add option "Replace Search Results Page" with selected page that embeds View via Block or shortcode in Search area settings for "WordPress Public Search" type * Add filter celersearch_view_search_hit for adding additional data to the hits response * Improve UI in view form = 1.1.1 = * Improve build process * Fix admin page icon = 1.1.0 = * Add WooCommerce integration * Add Views * Improved code quality * Improved UI/UX = 1.0.4 = * Add celersearch as committer * Add Confirmation for reindex operation * Fix WooCoomerce order index thumbnail * Fix Autocomplete dialog result display HTML escaped strings = 1.0.3 = * Add WooCommerce Orders index * Improved code quality = 1.0.2 = * Improved code quality = 1.0.1 = * Fixed minor bugs = 1.0.0 = * Initial release == Upgrade Notice ==