{"id":362424,"date":"2026-09-04T09:47:18","date_gmt":"2026-09-04T09:47:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/fast-json-search\/"},"modified":"2026-09-04T09:46:57","modified_gmt":"2026-09-04T09:46:57","slug":"jrmora-json-search","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/jrmora-json-search\/","author":13615078,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.0","stable_tag":"1.0.0","tested":"7.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"JRMora JSON Search","header_author":"JRMora","header_description":"Replaces heavy MySQL queries (LIKE %...%) by indexing published content into a static JSON file for ultra-fast search responses.","assets_banners_color":"767676","last_updated":"2026-09-04 09:46:57","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/jrmora.com\/","header_plugin_uri":"https:\/\/jrmora.com\/como-acelerar-buscador-wordpress-indice-json-estatico\/","header_author_uri":"https:\/\/jrmora.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":31,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.0.0":{"tag":"1.0.0","author":"jrmora","date":"2026-09-04 09:46:57","revision":3680984}},"upgrade_notice":{"1.0.0":"<ul>\n<li>Initial production release for static JSON search indexing.<\/li>\n<\/ul>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3680984,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3680984,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3680984,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3680984,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3680984,"resolution":"1","location":"assets","locale":"","width":843,"height":1184},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3680984,"resolution":"2","location":"assets","locale":"","width":1258,"height":851},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3680984,"resolution":"3","location":"assets","locale":"","width":1163,"height":1266}},"screenshots":{"1":"The JRMora JSON Search administration screen with manual reindex trigger and performance settings.","2":"Query Monitor overview showing low-latency search results with minimal database query overhead (0.0047s).","3":"Search results showing the response time of the first page"}},"plugin_section":[],"plugin_tags":[1118,1627,247,944,794],"plugin_category":[52,54,59],"plugin_contributors":[252048],"plugin_business_model":[],"class_list":["post-362424","plugin","type-plugin","status-publish","hentry","plugin_tags-json","plugin_tags-mysql","plugin_tags-performance","plugin_tags-search","plugin_tags-speed","plugin_category-performance","plugin_category-security-and-spam-protection","plugin_category-utilities-and-tools","plugin_contributors-jrmora","plugin_committers-jrmora"],"banners":{"banner":"https:\/\/ps.w.org\/jrmora-json-search\/assets\/banner-772x250.png?rev=3680984","banner_2x":"https:\/\/ps.w.org\/jrmora-json-search\/assets\/banner-1544x500.png?rev=3680984","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/jrmora-json-search\/assets\/icon-128x128.png?rev=3680984","icon_2x":"https:\/\/ps.w.org\/jrmora-json-search\/assets\/icon-256x256.png?rev=3680984","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/jrmora-json-search\/assets\/screenshot-1.png?rev=3680984","caption":"The JRMora JSON Search administration screen with manual reindex trigger and performance settings."},{"src":"https:\/\/ps.w.org\/jrmora-json-search\/assets\/screenshot-2.png?rev=3680984","caption":"Query Monitor overview showing low-latency search results with minimal database query overhead (0.0047s)."},{"src":"https:\/\/ps.w.org\/jrmora-json-search\/assets\/screenshot-3.png?rev=3680984","caption":"Search results showing the response time of the first page"}],"raw_content":"<!--section=description-->\n<p>Default WordPress search relies on heavy MySQL queries using full table scans (<code>LIKE %keyword%<\/code>). As your site grows with thousands of posts, this process degrades server performance, increases database CPU load, and leads to slow search response times or timeouts.<\/p>\n\n<p><strong>JRMora JSON Search<\/strong> solves this bottleneck completely by offloading the search process to a lightweight, static JSON file. Upon publishing or updating content, the plugin automatically indexes titles, content excerpts, categories, and tags into an optimized JSON file inside a dedicated <code>\/uploads\/jrmora-json-search\/<\/code> directory.<\/p>\n\n<p>When a user searches on your site, the plugin intercepts the main query, scans the pre-indexed JSON file in milliseconds, and feeds the matched post IDs directly back to WordPress (<code>WHERE ID IN (...)<\/code>). This bypasses expensive database string comparisons, drastically lowering database load and delivering near-instant search results.<\/p>\n\n<p><strong>Key Features:<\/strong><\/p>\n\n<ul>\n<li><strong>Database Relief:<\/strong> Eliminates heavy <code>LIKE %...%<\/code> queries on full-text content across the database.<\/li>\n<li><strong>Universal Theme Compatibility:<\/strong> Transparently hooks into the default WordPress search loop without requiring template edits or shortcodes.<\/li>\n<li><strong>Automatic Reindexing:<\/strong> Automatically updates the JSON search file every time a post is published, edited, or deleted.<\/li>\n<li><strong>Accent &amp; Diacritics Normalization:<\/strong> Strips accents and special characters during index generation and matching, guaranteeing accurate results regardless of search spelling (e.g., matching \"Periodismo\" with \"periodismo\").<\/li>\n<li><strong>Polylang Compatibility:<\/strong> Built-in support to respect multilingual filtering when using Polylang.<\/li>\n<li><strong>Performance Banner &amp; Shortcode:<\/strong> Optional performance banner displaying total results count and query execution times, or embeddable via <code>[fast_json_search_stats]<\/code>.<\/li>\n<li><strong>Manual Reindex Tool:<\/strong> Includes a simple admin settings page to manually rebuild the search index on demand after bulk content imports.<\/li>\n<li><strong>Clean &amp; Lightweight:<\/strong> Zero external dependencies, no extra database tables, zero background cron bloat, and fully internationalized for localization.<\/li>\n<\/ul>\n\n<p><strong>When is this plugin most useful?<\/strong><\/p>\n\n<ul>\n<li>Content-heavy websites, blogs, and digital publications with thousands of published posts.<\/li>\n<li>Sites experiencing high server CPU usage or database slow-query logs triggered by native site searches.<\/li>\n<li>Hosting environments with strict database resource limits where un-indexed full-text searching degrades performance.<\/li>\n<\/ul>\n\n<h3>Copyright<\/h3>\n\n<p>JRMora JSON Search is distributed under the terms of the GNU GPL v2 or later.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>jrmora-json-search<\/code> directory to the <code>\/wp-content\/plugins\/<\/code> directory, or upload the <code>.zip<\/code> file directly through the WordPress admin dashboard via <strong>Plugins &gt; Add New &gt; Upload<\/strong>.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress.<\/li>\n<li>Upon activation, the plugin automatically generates the initial <code>search-es.json<\/code> file inside your <code>\/wp-content\/uploads\/jrmora-json-search\/<\/code> directory.<\/li>\n<li>Optional: Navigate to <strong>Settings &gt; JRMora JSON Search<\/strong> to review settings and the manual reindex button.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20does%20the%20plugin%20replace%20mysql%20search%20queries%3F\"><h3>How does the plugin replace MySQL search queries?<\/h3><\/dt>\n<dd><p>When a frontend search is triggered, the plugin intercepts the main SQL query, nullifies the standard <code>LIKE %phrase%<\/code> clause, and searches the local <code>search-es.json<\/code> file instead. Once matching IDs are retrieved, it supplies those IDs directly into the SQL query using <code>post__in<\/code>.<\/p><\/dd>\n<dt id=\"does%20it%20create%20extra%20custom%20database%20tables%3F\"><h3>Does it create extra custom database tables?<\/h3><\/dt>\n<dd><p>No. JRMora JSON Search does not write any additional tables to your database. It generates a single static <code>.json<\/code> file inside a dedicated folder within your default WordPress uploads directory.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20publish%20or%20edit%20an%20article%3F\"><h3>What happens when I publish or edit an article?<\/h3><\/dt>\n<dd><p>The index is updated automatically in real-time. The plugin listens to native WordPress actions (<code>save_post<\/code> and <code>deleted_post<\/code>) to rebuild the index without manual intervention.<\/p><\/dd>\n<dt id=\"is%20the%20json%20file%20publicly%20accessible%20or%20heavy%3F\"><h3>Is the JSON file publicly accessible or heavy?<\/h3><\/dt>\n<dd><p>The JSON file only stores essential public information: post IDs, post titles, clean permalinks, stripped content excerpts (first 100 words), and taxonomy terms. It is highly compressed and stripped of unnecessary markup to keep file size minimal.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20i%20uninstall%20the%20plugin%3F\"><h3>What happens if I uninstall the plugin?<\/h3><\/dt>\n<dd><p>By default, the generated <code>search-es.json<\/code> file is kept in your uploads folder to avoid accidental data removal. However, you can enable the \"Clean Data on Uninstall\" option in the plugin settings page to automatically delete the dedicated directory and clean up all settings upon plugin uninstallation.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial official release.<\/li>\n<li>Automated JSON index compilation on post save and post deletion.<\/li>\n<li>Native search query interception with SQL <code>LIKE<\/code> clause elimination.<\/li>\n<li>Integrated string normalization for diacritics and accent-insensitive matching.<\/li>\n<li>Added Polylang language filtering support.<\/li>\n<li>Added optional execution time and results counter banner \/ shortcode.<\/li>\n<li>Added manual reindexing option in WP Admin.<\/li>\n<\/ul>","raw_excerpt":"Replaces heavy MySQL search queries with a static JSON index file for instantaneous, ultra-fast search responses.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/362424","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=362424"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jrmora"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=362424"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=362424"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=362424"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=362424"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=362424"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=362424"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}