Plugin Directory

Test out the new Plugin Directory and let us know what you think.

Relevanssi - A Better Search

Relevanssi replaces the default search with a partial-match search that sorts results by relevance. It also indexes comments and shortcode content.

  • Fix for a fatal bug in 3.5.6.


  • Relevanssi admin page had a vulnerability that allowed SQL injection attacks. That is now fixed.
  • Relevanssi didn't like to highlight search terms that are followed by a ?, an ! or an apostrophe.
  • New filter: relevanssi_ok_to_log lets you control whether search queries are logged or not.


  • 500 errors caused by arrays in custom fields should be gone now.
  • Improvements to the ACF "select" field support.
  • Relevanssi will not break when frontend plugins insert posts.
  • relevanssi_match filter has a new parameter, which contains the search term.
  • Polylang support has been improved.
  • WPML and Polylang filters work when "fields" is set to "ids".
  • New filter: relevanssi_log_get_user gets passed the user object before Relevanssi decides if the query should be logged or not.


  • Relevanssi had a bug that lead to inflated relevancy scores for posts.
  • Relevanssi can now index the human-readable labels of ACF "select" fields. (Thanks to Raphaël Droz.)
  • New filter: relevanssi_30days can be used to adjust the 30 day logs to a different number of days.
  • Adding stopwords that contain apostrophes didn't work.
  • Ensured PHP7 and WP 4.6 compatibility.
  • Fixed a small glitch that could happen if a highlighted term is next to a starting square bracket.


  • New filter relevanssi_user_searches_limit to adjust the number of user searches shown in the logs.
  • Old data check is only done on Relevanssi settings page, not on all admin pages. That should improve admin performance.
  • Fixed a fatal error when searching includes private posts.
  • New filter: relevanssi_remote_addr can be used to modify the IP address logged to Relevanssi logs.
  • Blocked CFDB and WooCommerce shortcodes that are causing problems with Relevanssi.


  • Added correct support for term_taxonomy_id in the fields parameter in tax_queries.


  • Fixed an error in the Did you mean function.
  • Fixed an error if the search term was not found in content.
  • Fixed an error when building excerpts from posts shorter than the excerpt length.
  • Blocked the [starpro] shortcode that was causing problems with Relevanssi.
  • New filter: relevanssi_remove_stopwords_in_titles allows you to include stopwords in titles.
  • Added support for term_tax_id in the fields parameter in tax_queries.
  • Excerpt-building failed if multibyte string operations were missing. It should work now.


  • Tokenizer was using strlen() and not mb_strlen(), so word lengths were not calculated properly. If your site uses non-ASCII alphabet, rebuilding the index is a good idea.
  • Small improvement to WPML multilanguage filtering.
  • relevanssi_the_title() got a new parameter: if you don't want to echo the title, you can use it like relevanssi_the_title(false) to make it return the title.
  • Relevanssi had the_title filter hook calls that were missing the second parameter; that's now fixed.
  • The excerpt-building algorithm is completely rewritten based on work by Ben Boyter (http://www.boyter.org/).
  • The [watupro] shortcode didn't work with Relevanssi, so Relevanssi will now bypass it.
  • The plugin i18n features have been improved slightly.
  • New filter: relevanssi_didyoumean_suggestion lets you modify the Did you mean? suggestion before it's displayed.
  • relevanssi_didyoumean() has a new parameter: you can now choose whether the result is echoed out (the default value) or just returned.
  • In the search results breakdown, you can now use %categories% and %taxonomies% to show the number of matches in categories and taxonomies other than tags and cats, respectively.
  • Relevanssi supports fields parameter (both ids and id=>parent) to return only post IDs or post IDs and post parents.


  • Empty lines on synonym settings caused problems. Fixed that.
  • In WordPress 4.2 installations, emoji in will be handled better. Emoji in posts may cause problems with WordPress versions below 4.2, so please update!


  • Removed a notice about an undefined variable.


  • New filter: relevanssi_valid_admin_status can be used to adjust post statuses that Relevanssi will handle.
  • If Relevanssi creates an empty excerpt for a post and there's a user-set excerpt for the post, that excerpt is used.
  • No ellipsis is added to the post excerpt, if the post excerpt shows the whole post.
  • The relevanssi_post_title_before_tokenize filter now has a second parameter that contains the post object.
  • New filter: relevanssi_display_common_words can be used to disable the "25 most common words" listing on the settings page, if it's too heavy to load.
  • Relevanssi was sanitizing taxonomy titles too aggressively. That is now toned down a bit.
  • Relevanssi now supports post_parent, post_parent__in and post_parent__not_in, though you have to set them in relevanssi_modify_wp_query filter for them to work.
  • Meta query support should now be perfect; there were some limitations with complicated meta queries before.


  • Fixed a bug that caused the results to change depending of the order of words in a multi-word search query.
  • Added product_categories and recent_products from WooCommerce to the list of blocked shortcodes.
  • There are improvements in excerpt-building and highlighting, especially when fuzzy search is enabled.
  • Fixed a possible (if quite unlikely) XSS vulnerability.
  • Improved search performance (thanks to MikeNGarrett).
  • Sometimes highlights in documents make the document content disappear. I don't know why, but I've added a fix that should make the content visible (without the highlights) if a problem appears.

  • Fixed bbPress compatibility.


  • Fixed bbPress compatibility.


  • Relevanssi handles taxonomy terms in search better. The change requires a reindexing.
  • Fix in indexing: Relevanssi will now bypass the global $post when indexing. This should help with problems with the Cookie Law Info plugin, for example.
  • Tax query relation setting didn't work properly. It is now fixed.
  • Word-based excerpt building sometimes created too short excerpts. That is now fixed.
  • Synonyms are now highlighted.
  • Phrase matching had issues where searching for a too common phrase crashed the search. That has been fixed.
  • LIKE operator didn't work properly in meta_queries.
  • Problems with Avatar Upload plugin are fixed.
  • Offset errors with mb_stripos() shouldn't happen anymore.
  • A small problem in taxonomy search MySQL fixed, also a small problem with AND operator in tax_queries.
  • New filter: relevanssi_post_to_index lets you access the post object before the post is indexed.
  • New filter: relevanssi_orderby lets you modify the $orderby value before Relevanssi sorts posts.
  • New filter: relevanssi_order lets you modify the $order value before Relevanssi sorts posts.
  • New filter: relevanssi_post_title_before_tokenize lets you modify post titles before indexing.
  • New filter: relevanssi_private_cap lets you adjust the capability setting for private posts in custom post types.
  • Deprecated use of like_escape has been fixed.


  • Fixed a bug where excluding posts would cause the search to fail.
  • Fixed a bug causing duplicate search results in WPML searches.
  • Increased plugin safety against hackers.
  • There was a bug in relevanssi_comment_content_to_index filter.
  • Some people had problems with the log entry timestamps. Fixed that.
  • New filter: relevanssi_prevent_default_request gives you more control over where Relevanssi prevents the default query from running.
  • New filter: relevanssi_private_cap lets you set the correct capability for finding private posts in custom post types.
  • The option to exclude categories and tags from search only worked for categories, not tags. Tags have been separated to a different option.


  • Couple of bug fixes.


  • OR fallback had problems.
  • Indexing sub pages didn't work.
  • Relevanssi now automatically treats 'ß' as 'ss'. If your site has 'ß' in text, reindexing the database is a good idea.
  • Query variable post_status is now supported.


  • Fixed a warning on search results page.


  • Fixed bugs related to the removal of the cache feature.


  • Improvements to excerpts: excerpts with phrases work much better now, and the excerpt creation logic has been improved: the excerpts are now better. The process takes a bit more time, though.
  • Allowing HTML tags in excerpts could lead to those tags being left open. Relevanssi will now try to close open HTML tags in excerpts.
  • Allowed tags were not controlled in comments. They are now.
  • Highlighting in documents didn't always work; it should be more reliable now.
  • Non-integer values are removed from post__in and post__not_in before processing them.
  • Query variables p and page_id are now supported.
  • Relevanssi now understands date_query variables as well.
  • The original post excerpt is stored in $post->original_excerpt.
  • Taxonomy search works better with term id parameters (for example from wp_category_dropdown).
  • Errors about $wpdb->prepare() missing an argument removed.
  • New functions: relevanssi_the_title() and relevanssi_get_the_title() can be used to display highlighted titles in search results.
  • The old title highlighting method has been disabled, because it caused highlights in wrong places. Now the highlighted title is stored in $post->highlighted_post_title, take it from there or use the Relevanssi title functions to display it.
  • Polylang and WPML support was adjusted to perform better in edge cases.
  • Indexing is faster, thanks to some improved code from Tom Novelli.
  • MySQL injection attack vulnerability removed.
  • The cache feature is now removed. Relevanssi should automatically drop the cache tables.
  • New filter: relevanssi_indexing_data lets you modify the data before it's indexed.


  • Fixed a bug in the TablePress support.
  • Titles are put through the_title filter before indexing.
  • New filter: relevanssi_join can be used to join tables in the Relevanssi search MySQL queries. Thanks to Ninos Ego.
  • New filter: relevanssi_post_content can be used to modify post content before any Relevanssi processing.
  • New filter: relevanssi_post_content_before_tokenize can be used to modify post content just before it's tokenized.
  • New filter: relevanssi_indexing_values can be used to modify what Relevanssi stores in the index.
  • New filter: relevanssi_default_meta_query_relation can be used to change the default meta query relation (default value is "AND").
  • When using a meta_query, relation can be set to OR now.
  • Phrases are now matched to excerpts.
  • Number of queries Relevanssi generates is much, much lower.
  • New filter: relevanssi_didyoumean_url lets you modify the URL generated by the did you mean feature.
  • Better set of Russian stopwords.
  • Relevanssi now highlights search query synonyms as well in documents.


  • Fix to make Relevanssi compatible with WordPress 3.7.
  • Fixed a mistyped database table name.
  • Relevanssi disables responsive-flipbook shortcode in indexing; it was causing problems.
  • Fixed a problem with an author dropdown with no author selected.


  • Category restriction and exclusion and couple of other category-related settings didn't work properly.
  • Support for Polylang broke the support for WPML. That is now fixed.
  • One deprecated $wpdb->escape() was still left; it's gone now.
  • Shortcode layerslider was causing problems with Relevanssi; Relevanssi now disables it before building excerpts.
  • Relevanssi won't break BBPress search anymore.
  • If Relevanssi Premium is installed, deleting Relevanssi will not remove the databases and the options.


  • New filter: relevanssi_comment_content_to_index lets you modify comment content before it's indexed by Relevanssi (to index comment meta, for example).
  • Facetious support: if post_type is set to -1, Relevanssi will not hang up on it.
  • Numerical search terms work better now.
  • Excerpt-building had issues, which are now fixed.
  • Punctuation removal now replaces   with a space.
  • "starrater" short code from GD Star Rating is now disabled in indexing.
  • Punctuation removal now replaces invisible spaces with a normal space.
  • Division by zero error caused by 0 in posts_per_page is now prevented, and -1 value for posts_per_page handled better.
  • Relevanssi doesn't apply get_the_excerpt filters to excerpts it builds any more.
  • New filter: relevanssi_excerpt lets you modify the excerpts Relevanssi creates.
  • Relevanssi now suspends WP post cache while indexing, making indexing a lot more efficient. Thanks to Julien Mession for this one.
  • Deprecated function errors in 3.6 removed.
  • When search included user profiles or taxonomy terms, Relevanssi would generate lots of MySQL errors. Not anymore.
  • New filter: relevanssi_valid_status lets you modify the post statuses Relevanssi indexes.
  • New filter: relevanssi_index_taxonomies_args lets you modify the arguments passed to get_terms() when indexing taxonomies (for example to set 'hide_empty' to false).
  • Searching by taxonomy ID could confuse two taxonomies with the same term_id. The search is now checking the taxonomy as well to see it's correct.
  • Basic support for Polylang plugin.
  • Russian and Italian stopwords are now included, thanks to Flector and Valerio Vendrame.
  • Small fix in the way user meta fields are handled.


  • Fuzzy searches are now a lot more efficient; they were a huge resource hog before.
  • Fixed a possible MySQL injection attack.
  • Fixed MySQL errors from empty meta queries.
  • Sort order (orderby and order variables) are now read from query variables instead of global variables.
  • Relevanssi will not choke on bad values of orderby anymore.
  • Limit searches is improved: when using AND search it is less likely to miss results.
  • Phrase recognition read the whole post content (which it didn't need) from database, causing memory issues in some cases. Fixed that.
  • Highlighting was broken, and should work much better now.


  • OR fallback didn't actually fall back to OR, but instead got stuck in an endless loop of AND searches.
  • Meta queries didn't work without a key; now they work with just meta_value or meta_value_num.
  • Meta queries had problems with meta_value being set to null.
  • Relevanssi now supports category__and. By default this sets include_children to false.
  • When querying by slug, the term taxonomy is also taken into consideration, fixing problems when same slug appears in different taxonomies.
  • Author search didn't work.
  • Fixed an error message caused by all-number synonyms starting with zero, like 02.
  • Synonyms are now case-insensitive.
  • New filter: relevanssi_default_tax_query_relation can be used to change the default tax query relation from OR to AND.
  • Fixed undefined variable errors when doing an OR fallback.
  • New filter: relevanssi_bots_to_not_log makes it possible to block bots from logs. The format matches what other plugins, ie. WP-Useronline, use for bot blocking, so you can share block lists.
  • New filter: relevanssi_admin_search_ok gives you more control when Relevanssi overrides the default WP search in admin, useful for fixing P2P_Box AJAX search.
  • Ordering search results by title or date in admin search works now.
  • Modified the way the highlights work; now highlighting words with apostrophes should produce more meaningful results.
  • Highlighting should not highlight anything between & and ; or in or tags, thus solving some of the problems related to highlights. Reports of how well this works are welcome.
  • On-post highlighting now only highlights content in the loop, so menu texts and other off-the-loop stuff should not get highlights anymore.
  • New action hook: relevanssi_pre_indexing_query can be used to "SET OPTION SQL_BIG_SELECTS=1" if needed.
  • Major indexing problems caused by shortcodes changing the post ID during the indexing of posts are now fixed.
  • Relevanssi was being called twice when a post was saved, on save_post and wp_insert_post. I removed the hook on save_post.
  • Unsuccessful searches are now ordered by count, like the successful queries are.


  • Choosing which taxonomies to index is now done with an easy-to-use checkbox list.
  • Support for WP Table Reloaded and TablePress. Tables created with these plugins will now be expanded and the content indexed by Relevanssi.
  • New filter: relevanssi_index_comments_exclude can be used to exclude comments from indexing. The filter gets the post ID as a parameter, so you can prevent comments of particular posts being indexed, yet index those posts.
  • Relevanssi now adds spaces between tags when creating excerpts to make neater excerpts from tables and other similar situations.
  • Relevanssi now indexes unattached attachments, if you choose to index attachments.
  • Fixed the problems with Twenty Ten and Twenty Eleven themes better.
  • $match->tag now contains the number of tag hits.
  • Relevanssi now adds relevance score to posts before passing them to relevanssi_hits_filter. You can find it in $post->relevance_score.
  • Tags in breakdowns always showed 0, even though tags were indexed and searched correctly. That's now fixed.


  • AND search did not work in all cases.
  • Posts couldn't be found by category name. Fixed that.


  • Exclude category option was broken. Fixed that.
  • Searching for a non-existing category ID caused an error. Fixed that.
  • Occasional blank screens of death occurred when multibyte string operations weren't installed. That should not happen anymore.
  • Fallback to OR search was a bit broken.


  • Small fix to prevent database errors.
  • Small fix to prevent disappearing excerpts.


  • Fixed the uninstalling instructions.
  • Fixes a problem with Twenty Ten and Twenty Eleven themes that caused doubled "Continue Reading" links.
  • Fixed a notice about undefined variable on plugin update pages.
  • Small bug fixes on search to remove warning notices.
  • New filter: relevanssi_index_custom_fields can be used to modify the list of custom fields to index.
  • Deleting menus caused a warning. That is now fixed.
  • Relevanssi has an option to disable IP logging (which is actually illegal in some countries). Thanks to Stefan Eufinger.
  • Searching in subcategories worked sometimes, but not always. Thanks to Faebu.
  • The "Limit searches" option didn't work too well in the case of strong weightings, as it didn't take note of any weights. Now it works better.
  • Added a note about disabling custom excerpts when they are not needed - they can slow down the search quite a bit.
  • New filter: relevanssi_options_capability can be used to modify the capability required to see the options page (default is manage_options).
  • Fixed the way IDF is calculated to account some extreme cases with small databases.
  • New filter: relevanssi_index_custom_fields gives added control over which custom fields are indexed.
  • Fixed filter: relevanssi_pre_excerpt_content wasn't working properly.
  • Relevanssi now supports tax_query, for most part. You can query multiple taxonomies, use relation AND and OR, use operators AND, IN and NOT IN and choose include_children (which defaults to true). Old taxonomy and term still work, but I recommend using tax_query for the level of control it offers.
  • Relevanssi now works better with category restrictions. The extra cats query variable is no longer necessary, Relevanssi can now read multiple categories from cat. You can also use category__and, category__in and category__not_in.
  • Same goes with tags: tags is now longer necessary. Relevanssi has full support for tag, tag_id, tag__and, tag__in, tag__not_in, tag_slug__and, tag_slug__in and tag_slug__not_in. For tag, both term1+term2 and term1,term2 is supported.
  • Relevanssi now supports author_name and negative values for author.
  • Relevanssi now supports offset query variable.
  • Relevanssi now supports meta_query. You can use all comparisons (also EXISTS and NOT EXISTS, even if you don't have WP 3.5). You can also use the older meta_key and meta_value query variables, including all the comparisons. I have not tested all possible meta_query constructions, so bug reports of things that don't work as expected are welcome.
  • New index on the database makes some database operations faster.
  • Removed a bug that prevents one-character words from being indexed in titles, despite the minimum word length setting.
  • Removed a warning when searching for nothing.
  • Fixes a warning about $wpdb->prepare() caused by a change in WordPress 3.5.


  • AFTER UPGRADING FROM 2.x: Make sure you deactivate and reactivate Relevanssi in order to make the database changes happen.
  • Fixed a major bug that caused the searches to fail when "Limit searches" was enabled, but "Limit" was not defined.
  • Modified relevanssi_remove_punct() to replace curly apostrophes and quotes with spaces instead of removing them, to make the index more consistent (regular apostrophes were replaced with spaces). Reindexing the database is a good idea.
  • Fixed some misleading text on the options page.


  • AFTER UPGRADING FROM 2.x: Make sure you deactivate and reactivate Relevanssi in order to make the database changes happen.
  • Fixed another problem with the Jetpack Contact Form.
  • Fixed an error message caused by searching for numbers.
  • Phrases are now also recognized in drafts and attachments.
  • You can now set post_types to 'any'.


  • AFTER UPGRADING FROM 2.x: Make sure you deactivate and reactivate Relevanssi in order to make the database changes happen.
  • Fixed a bug that made custom taxonomy term searches fail.
  • New filter: relevanssi_user_searches_capability lets you modify the minimum capability required to see the User searches page.


  • AFTER UPGRADING FROM 2.x: Make sure you deactivate and reactivate Relevanssi in order to make the database changes happen.
  • Fixed the "Cannot use a scalar value as an array" bug in indexing.
  • Role-Scoper users: in order to make Relevanssi work with Role-Scoper, replace the Relevanssi helper file in Role-Scoper with this file.
  • Removed an error message about set_time_limit() under safe_mode.
  • Jetpack Contact Form shortcode caused problems when indexing. Relevanssi will now simply remove the shortcode before indexing.
  • Fixed errors caused by / characters in highlighting.


  • AFTER UPGRADING FROM 2.x: Make sure you deactivate and reactivate Relevanssi in order to make the database changes happen.
  • Fixed lots of problems in logging searches.
  • Added an alert when user hasn't selected any post types to index (and default values).
  • Custom field setting 'visible' works now.
  • Searching by category title works now, and you can adjust the category weight in the settings.


  • AFTER UPGRADING FROM 2.x: Make sure you deactivate and reactivate Relevanssi in order to make the database changes happen.
  • WORD OF WARNING: This is a major update, with lots of changes as you can see, and since I couldn't find any beta testers to help test it out, consider this a beta release, with bugs probable.
  • The database has been updated to match the more advanced structure in Relevanssi Premium. This requires a re-indexing of the database.
  • The indexing process is more efficient now.
  • Relevanssi now includes a throttle feature, which makes the searches more efficient.
  • Relevanssi now disables the default WP search.
  • The custom field search hack using cat set to "custom" doesn't work any more. If you wish to filter by custom field, you need Relevanssi Premium, which does it better anyway.
  • Relevanssi can handle certain whitespace characters better in indexing.
  • Apostrophes are now replaced with whitespace instead of being removed.
  • Relevanssi now shows correct number of results when posts_per_page is set to -1.
  • Fuzzy search didn't always activate when it should, if all found posts are private posts that can't be shown to user.
  • Tab characters in excerpts are handled better now.
  • Relevanssi search logs will now store user ID's and IP addresses for each query.
  • You can now use user logins as well as numeric ID's to stop user from being logged.
  • Attachments are now handled better. I'd still like to hear any complaints about attachments.
  • Relevanssi now updates index for posts added with wp_update_post() function. (Thanks to Simon Blackbourn)
  • Searching for pages in admin didn't work properly. Fixed that.
  • Fixed warnings for undefined variables.
  • Relevanssi won't mess media library searches any more.
  • Search terms are no longer highlighted in titles on post pages. That caused too many problems.
  • New collation rules to MySQL databases will make sure that word pairs like "pode" and "pôde" will not be considered duplicates in the stopword database.
  • You can now set the "Custom fields to index" to "all" to index all custom fields and "visible" to index all visible custom fields (but not the ones with names starting with an underscore).
  • Plugin now works properly without multibyte string functions.
  • You can now choose to allow HTML tags in excerpts.
  • New filter: relevanssi_modify_wp_query lets you modify $wp_query before it is passed to Relevanssi.
  • New filter: relevanssi_search_ok lets you adjust when search is enabled.
  • New filter: relevanssi_pre_excerpt_content lets you adjust post content before excerpt creation.
  • New filter: relevanssi_excerpt_content lets you adjust post content before excerpt creation, but after the_content.
  • New filter: relevanssi_ellipsis lets you change the default '...' in excerpts to something else.
  • New filter: relevanssi_do_not_index is given a post ID and expects a boolean in return: should this post be indexed or not?
  • New filter: relevanssi_match lets you meddle with the matching engine.
  • New filter: relevanssi_results filters the result set from the search.
  • New filter: relevanssi_content_to_index let's you add whatever content you wish to posts before they are indexed.
  • New filter: relevanssi_didyoumean_query let's you modify the query for Did you mean? queries
  • Changed filter: relevanssi_post_ok has different arguments, see source code for details.
  • New shortcode: use shortcode noindex to wrap parts of posts you want to keep from the index.
  • And a bunch of other changes.


  • Relevanssi will now index pending and future posts. These posts are only shown in the admin search.


  • Stripping shortcodes from excerpts didn't work properly. Should work now.
  • Fixed a mistake in the FAQ: correct post date parameter is post_date, not date.
  • New filter relevanssi_results added. This filter will process an array with (post->ID => document weight) pairs.
  • Private and draft posts were deleted from the index when they were edited. This bug has been fixed. (Thanks to comprock.)
  • When continuing indexing, Relevanssi now tells if there's more to index. (Thanks to mrose17.)
  • Fixed problems with searching attachments. Indexing attachments still has some problems. When you build the index, attachments are indexed properly.
  • Improved WPML support.
  • The relevanssi_index_doc() function has a new parameter that allows you to bypass global $post and force the function to index the document given as a parameter (see 2.9.13 release notes at Relevanssi.com for more details).


  • Scheduled cache truncate wasn't scheduled properly. It is now.
  • Added support for 'author' query variable.
  • Fixed a bug with indexing custom post types.


  • Plugin now works properly without multibyte string functions.
  • Fixed s2member support for s2member versions 110912 and above. (Thanks to Jason Caldwell.)
  • Added support for 'tag' query variable.


  • AND search failed, when search query included terms that are shorter than the minimum word length.
  • Improved s2member support.
  • Fixed errors about deprecated ereg_replace.
  • Small fix to Did you mean suggestions.


  • Removed warnings about undefined functions and missing $wpdb.
  • Fixed a bug that removed 'à' from search terms.
  • Phrases are recognized from custom field searches.


  • Support for s2member membership plugin. Search won't show posts that the current user isn't allowed to see.
  • New filter relevanssi_post_ok can be used to add support for other membership plugins.
  • Post meta fields that contain arrays are now indexed properly, expanding all the arrays.


  • Fixed a bug that causes problems when paging search results.
  • Taxonomy term restrictions didn't work most of the time.
  • the_content filters didn't run on excerpts.
  • Style data and other extra elements created by short codes are now stripped.


  • Fixed a problem causing "Attempt to modify property of non-object" errors.
  • Fixed a warning message.


  • Searching for private posts caused an error message.


  • Relevanssi should now be much lighter on server.
  • Post date selection didn't work properly. Fixed that.
  • Stopwords can be exported.
  • Restricting indexing on custom post types works better.
  • Minimum word length is properly enforced in indexing.
  • Punctuation removal is more efficient.
  • Fixed a MySQL error that was triggered by a media upload.
  • Fixed a bug that caused an error when quick editing a post.


  • A call to a non-existing function in 2.9.2 made all sorts of mess. This release fixes all problems with broken loops. I'm sorry about the bug.


  • It's now possible to adjust the number of search results per page. See Changing posts_per_page for instructions.
  • Somebody reported revisions appearing in the search results. Added an extra check to prevent that.
  • Improved the indexing procedure to prevent MySQL errors from appearing and to streamline the process.
  • Improved the way custom post types can be handled in indexing.
  • Improved the method of removing nested highlights.


  • It is now possible to change the default result order from relevance to post date.
  • Fixed a bug that caused wrong $post object to be set in indexing.
  • Added a new hook relevanssi_excerpt_content; see Knowledge Base for details.


  • Fixed a bug that caused Cyrillic searches in the log to get corrupted.
  • Punctuation removal function is now triggered with a filter call and can thus be replaced.
  • Google Adsense caused double hits to the user search logs. That's now fixed thanks to Justin Klein.
  • User search log is available to user with edit_post capabilities (editor role). Thanks to John Blackbourn.
  • A proper database collation is now set. Thanks to John Blackbourn.
  • UI looks better. Thanks to John Blackbourn.
  • Lots of small fixes here and there.


  • The order parameter was case sensitive. It isn't anymore.
  • WordPress didn't support searching for multiple categories with the cat query variable. There's now new cats which can take multiple categories.
  • Similar to cats vs cat, you can use post_types to restrict the search to multiple post types.


  • Fixed two small mistakes that caused error notices.
  • Custom post types, particularly those created by More Types plugin, were causing problems.


  • There's now a way to truncate the cache (sorry it took so long). Expired cache data is now automatically removed from the database every day. There's also an option to clear the caches.
  • Highlights didn't work properly with non-ASCII alphabets. Now there's an option to make them work.
  • Title highlight option now affects external search term highlights as well.
  • There were some bugs on the options page.


  • There was a bug that caused shortcodes to fail in 2.7.4. That's fixed now.
  • Category search will now include subcategories as well, both when including and excluding.


  • Improved the fallback to fuzzy search if no hits are found with regular search.
  • AND searches sometimes failed to work properly, causing unnecessary fallback to OR search. Fixed.
  • When using WPML, it's now possible to choose if the searches are limited to current language.
  • Adding stopwords from the list of 25 common words didn't work. It works now.
  • The instructions to add a category dropdown to search form weren't quite correct. They are now.
  • Small fix that makes shortcodes in posts more compatible with Relevanssi.


  • IMPORTANT SECURITY UPDATE: Earlier versions of Relevanssi have a cross-site scripting (XSS) vulnerability. Please install this update as soon as possible.
  • Added instructions of doing a category dropdown in the search form in the FAQ.


  • A silly typo caused the caching not to work. That's fixed now.
  • A new filter: relevanssi_didyoumean_query lets you modify the query used for 'Did you mean?' searches.


  • Thanks to a bug in the code, the WPML support didn't work. It's fixed now.


  • Caching search results is possible. If you have lots of repeated queries, caching will provide extra speed and less wear on server.
  • Multilanguage plugin WPML is now supported. If WPML is active, Relevanssi will automatically restrict search results to current language.
  • New filter: relevanssi_search_filter lets you adjust search query variables. See source code for further details. Thanks to Sam Hotchkiss.
  • Got a report of synonyms not working; hopefully fixed it now.
  • It is now possible to set the minimum word length to index. Default is now 3 instead of 2.
  • You can now add several stopwords at one go and remove all stopwords.
  • Author search didn't work properly. It works now.
  • Search result highlighting functions properly now, there might've been some problems with it.


  • New setting allows user to define how exclude_from_search is handled. It's now possible to exclude a custom post type from general searches and search for it specifically by defining post_type.
  • New filter: relevanssi_hits_filter lets you process hits found by Relevanssi. See FAQ.


  • Attachments are no longer automatically indexed; there's an option for it now.
  • You can now exclude custom post types from index.
  • When AND search fails, it falls back to OR search. It's now possible to disable this fallback.


  • The stopword management created empty stopwords. It won't anymore.
  • Faulty HTML code in the admin page has been fixed.
  • Indexing shortcodes that need the global $post context is now possible.
  • Relevanssi is now aware of attachments and manages post_status of "inherit".
  • These fixes were provided by Warren Tape, thanks!


  • Small bugfix relating to post types.
  • Added stopword management tools: way to remove and add stopwords.
  • Custom excerpts can now be created from post excerpts as well, if those are indexed.
  • Added answers to some frequently asked questions to the documentation.


  • Very small bugfix fixing the error on line 1192.


  • Fixed a bug about mysql_real_escape_string() expecting a string.
  • Added documentation about compatibility issues.


  • Option to highlight search terms in comment text as well.
  • Fixed a small problem in highlighting search terms.


  • Better support for other search plugins like Dave's WordPress Live Search.
  • New User searches screen that shows more data about user searches.
  • Search logs can now be emptied.
  • Custom fields weren't indexed on updated posts. That is now fixed.
  • Once again improved the highlighting: now the highlighting will look for word boundaries and won't highlight terms inside words.
  • Relevanssi query engine can now be accessed directly, making all sorts of advanced hacking easier. See FAQ.


  • Fixed a problem where search term highlighting was changing terms to lowercase.
  • Fixed a problem with highlighting breaking stuff in shortcodes.
  • Made some changes to the admin interface - there's more to come here, as the admin page is a bit of a mess right now.


  • Highlighting post content won't highlight inside HTML tags anymore.
  • Soft hyphens inside words are now removed in indexing. They still confuse the highlighting.
  • Matching engine is now able to match category titles that contain apostrophes.

  • Suppressed the error messages on the correct mb_strpos() function call. If you still get mb_strpos() errors, update.
  • Added a FAQ note on getting the number of search results found.


  • Suppressed notices on one mb_strpos() call.
  • Added a search variable "by_date" to filter search results, see FAQ for details.


  • Fixed a serious bug related to taxonomy term searches that could cause strange search results. Thanks to Charles St-Pierre for finding and killing the bug.
  • Spanish stopwords are now included (thanks to Miguel Mariano).


  • I fixed the highlighting logic a bit, the highlighting didn't work properly before.


  • New highlighting option: HTML5 mark tag. Thanks to Jeff Byrnes.
  • Relevanssi can now highlight search term hits in the posts user views from search. Highlighting for search term hits from external searches will be added later.
  • It is now possible to add custom filtering to search results, see FAQ for details. Thanks to Charles St-Pierre.
  • Removed search result highlighting from admin search, where it wasn't very useful.


  • Relevanssi used to index navigation menu items. It won't, anymore.
  • Translation and stopwords in Brazilian Portuguese added, thanks to Pedro Padron.


  • No changes, I'm

Requires: 4.0 or higher
Compatible up to: 4.7.1
Last Updated: 1 month ago
Active Installs: 100,000+


4.7 out of 5 stars


25 of 40 support threads in the last two months have been marked resolved.

Got something to say? Need help?


Not enough data

0 people say it works.
0 people say it's broken.

50,4,2 100,2,2 100,1,1
100,2,2 100,1,1 100,6,6 80,5,4 100,1,1 0,1,0 100,1,1 100,1,1
75,4,3 100,3,3 100,3,3 0,1,0
100,2,2 100,1,1 50,2,1 100,1,1 100,4,4 67,3,2 100,3,3 60,5,3
100,3,3 100,1,1
100,2,2 100,1,1 100,1,1
100,1,1 100,1,1 100,3,3
100,1,1 100,1,1 100,1,1 100,1,1 100,10,10 63,8,5 100,1,1 100,1,1
100,3,3 50,2,1 100,2,2
100,7,7 100,1,1 67,3,2 100,1,1
100,3,3 100,4,4 100,1,1 0,12,0 100,2,2
100,1,1 100,1,1 0,1,0 100,2,2
83,6,5 100,9,9 90,10,9 100,3,3 100,3,3 100,1,1 100,3,3 100,9,9 100,1,1
67,6,4 100,1,1
100,1,1 100,1,1 89,9,8 100,4,4 100,12,12
57,7,4 0,1,0 100,1,1
0,1,0 100,1,1
100,2,2 27,11,3 50,8,4 60,5,3 100,5,5 40,5,2
100,1,1 85,20,17 100,1,1
0,1,0 0,3,0 100,1,1 50,2,1 83,6,5 100,1,1
100,1,1 50,2,1 71,7,5 100,8,8 56,9,5 100,1,1
50,2,1 33,3,1
20,5,1 67,3,2
67,3,2 0,1,0 0,2,0 100,1,1 67,3,2 100,2,2
100,1,1 100,4,4
100,5,5 100,1,1 100,1,1
100,1,1 100,3,3
100,2,2 100,1,1 100,1,1
100,1,1 100,1,1 0,1,0 100,2,2