{"id":345542,"date":"2026-07-29T09:10:18","date_gmt":"2026-07-29T09:10:18","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/searchwright\/"},"modified":"2026-07-29T09:09:46","modified_gmt":"2026-07-29T09:09:46","slug":"searchwright","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/searchwright\/","author":14088922,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.1","stable_tag":"0.1.1","tested":"7.0.2","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"SearchWright","header_author":"Adnan Bashir","header_description":"Fast, typo-tolerant site search powered by a Typesense server you control. Replaces the built-in WordPress search query and adds an optional instant-search dropdown.","assets_banners_color":"0c8d82","last_updated":"2026-07-29 09:09:46","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/profiles.wordpress.org\/muhammadnan\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":19,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.1":{"tag":"0.1.1","author":"muhammadnan","date":"2026-07-29 09:09:46"}},"upgrade_notice":{"0.1.1":"<p>Fixes two documentation links.<\/p>","0.1.0":"<p>First release.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3626985,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3626985,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3626985,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3626985,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.1"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[3539,5185,5902,944,206444],"plugin_category":[],"plugin_contributors":[273000],"plugin_business_model":[],"class_list":["post-345542","plugin","type-plugin","status-publish","hentry","plugin_tags-instant-search","plugin_tags-live-search","plugin_tags-relevance","plugin_tags-search","plugin_tags-typesense","plugin_contributors-muhammadnan","plugin_committers-muhammadnan"],"banners":{"banner":"https:\/\/ps.w.org\/searchwright\/assets\/banner-772x250.jpg?rev=3626985","banner_2x":"https:\/\/ps.w.org\/searchwright\/assets\/banner-1544x500.jpg?rev=3626985","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/searchwright\/assets\/icon-128x128.png?rev=3626985","icon_2x":"https:\/\/ps.w.org\/searchwright\/assets\/icon-256x256.png?rev=3626985","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>WordPress search runs a <code>LIKE<\/code> query against your posts table. It is slow on large sites, it ranks results by date rather than relevance, and it finds nothing at all if a visitor misspells a word.<\/p>\n\n<p>SearchWright hands that job to <a href=\"https:\/\/typesense.org\/\">Typesense<\/a>, an open source search engine you either self-host or rent. Your content is indexed there; searches are answered from memory in a few milliseconds and tolerate typos.<\/p>\n\n<p><strong>What it does<\/strong><\/p>\n\n<ul>\n<li>Answers the built-in search results page from Typesense, keeping your theme's template and pagination intact.<\/li>\n<li>Adds an optional instant-results dropdown to any search input on the site.<\/li>\n<li>Indexes posts, pages and any public custom post type, along with taxonomy terms.<\/li>\n<li>Rebuilds without downtime: each rebuild writes to a fresh collection and only switches search over once it finishes.<\/li>\n<li>Keeps the live index current as posts are published, edited, trashed and deleted.<\/li>\n<li>Falls back to the normal WordPress query if the search server cannot be reached, so an outage slows search down rather than breaking the page.<\/li>\n<\/ul>\n\n<p><strong>Built to stay out of the way<\/strong><\/p>\n\n<ul>\n<li>Your API key is never sent to the browser. Searches are proxied through your own site.<\/li>\n<li>The public endpoint can be restricted to same-origin requests and rate limited per visitor.<\/li>\n<li>No front-end assets load unless instant search is switched on.<\/li>\n<li>Two option rows, both with autoloading disabled. No third-party JavaScript libraries.<\/li>\n<\/ul>\n\n<p><strong>WooCommerce<\/strong><\/p>\n\n<p>Products are indexed like any other post type, so they turn up in results. Understanding them \u2014 price, stock, variations, attributes, faceted filtering \u2014 is handled by a separate add-on plugin, which is not included here. Nothing in this plugin is disabled pending a purchase. The extension filters the add-on uses are public and documented under Settings \u2192 SearchWright \u2192 WooCommerce, so you are equally free to write your own.<\/p>\n\n<h3>External services<\/h3>\n\n<p>This plugin connects to a Typesense server that <strong>you<\/strong> specify in its settings. There is no default server and no connection is made until you enter a hostname and an API key.<\/p>\n\n<p>What is sent, and when:<\/p>\n\n<ul>\n<li><strong>On indexing:<\/strong> the title, excerpt, body text, permalink, featured image URL, author display name, publish date and assigned taxonomy terms of each post you have chosen to index. This happens when you run a rebuild, and when a post is created, edited, trashed or deleted.<\/li>\n<li><strong>On searching:<\/strong> the visitor's search term, along with paging and filtering parameters.<\/li>\n<\/ul>\n\n<p>Where that data goes is entirely determined by the host you configure. If you use Typesense Cloud, that is Typesense's hosted service, governed by their <a href=\"https:\/\/cloud.typesense.org\/legal\/terms\">terms of service<\/a> and <a href=\"https:\/\/cloud.typesense.org\/legal\/privacy\">privacy policy<\/a>. If you run Typesense on your own hardware, the data does not leave your infrastructure.<\/p>\n\n<p>This plugin makes no other outbound requests. It does not phone home and it collects no analytics.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>You need a running Typesense server first, either on <a href=\"https:\/\/cloud.typesense.org\/\">Typesense Cloud<\/a> or self-hosted. Note its hostname, port and admin API key.<\/li>\n<li>Install and activate SearchWright.<\/li>\n<li>Go to <strong>Settings \u2192 SearchWright<\/strong>, enter the host details and save, then press <strong>Test connection<\/strong>.<\/li>\n<li>On the <strong>Indexing<\/strong> tab, choose which post types and taxonomies to include, save, and press <strong>Rebuild index<\/strong>.<\/li>\n<li>On the <strong>Search<\/strong> tab, switch on the search override and, if you want it, the instant dropdown.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20a%20paid%20service%3F\"><h3>Do I need a paid service?<\/h3><\/dt>\n<dd><p>No. Typesense is open source and runs on a small server perfectly well. Typesense Cloud is a convenience, not a requirement.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20the%20search%20server%20goes%20down%3F\"><h3>What happens if the search server goes down?<\/h3><\/dt>\n<dd><p>The search results page falls back to the ordinary WordPress query, so visitors still get results, just slower and less relevant ones. The instant dropdown reports that search is unavailable and does nothing else.<\/p><\/dd>\n<dt id=\"does%20my%20api%20key%20end%20up%20in%20the%20page%20source%3F\"><h3>Does my API key end up in the page source?<\/h3><\/dt>\n<dd><p>No. The browser talks to a REST endpoint on your own site, which talks to Typesense server-side. The key stays on the server.<\/p><\/dd>\n<dt id=\"will%20this%20work%20with%20my%20theme%27s%20search%20box%3F\"><h3>Will this work with my theme's search box?<\/h3><\/dt>\n<dd><p>The dropdown attaches to any input matching the CSS selector on the Search tab, which defaults to standard search fields. If your theme uses something unusual, put its selector in that box.<\/p><\/dd>\n<dt id=\"does%20it%20search%20woocommerce%20products%3F\"><h3>Does it search WooCommerce products?<\/h3><\/dt>\n<dd><p>Products appear in results because they are a public post type. Sorting and filtering by price, stock, attributes or variations needs the separate WooCommerce add-on described on the WooCommerce tab.<\/p><\/dd>\n<dt id=\"how%20large%20a%20site%20can%20it%20handle%3F\"><h3>How large a site can it handle?<\/h3><\/dt>\n<dd><p>Indexing runs in batches from the browser, so site size is limited by your Typesense server rather than by PHP timeouts. Sites with hundreds of thousands of posts are well within Typesense's range.<\/p><\/dd>\n<dt id=\"is%20it%20multisite%20compatible%3F\"><h3>Is it multisite compatible?<\/h3><\/dt>\n<dd><p>Each site in a network keeps its own settings and its own collection. Point them at different collection names on the Connection tab.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Corrected the Typesense Cloud terms and privacy policy links in the external-services disclosure.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<\/ul>","raw_excerpt":"Replace the built-in WordPress search with a Typesense server you control. Typo tolerant, fast, and it falls back gracefully if the server is down.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/345542","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=345542"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/muhammadnan"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=345542"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=345542"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=345542"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=345542"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=345542"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=345542"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}