Relevanssi – A Better Search

Description

Relevanssi replaces the standard WordPress search with a better search engine, with lots of features and configurable options. You’ll get better results, better presentation of results – your users will thank you.

This is the free version of Relevanssi. There’s also Relevanssi Premium, which has added features. For more information about Premium, see Relevanssi.com.

Do note that using Relevanssi may require large amounts (hundreds of megabytes) of database space (for a reasonable estimate, multiply the size of your wp_posts database table by three). If your hosting setup has a limited amount of space for database tables, using Relevanssi may cause problems. In those cases use of Relevanssi cannot be recommended.

Key features

  • Search results sorted in the order of relevance, not by date.
  • Fuzzy matching: match partial words, if complete words don’t match.
  • Find documents matching either just one search term (OR query) or require all words to appear (AND query).
  • Search for phrases with quotes, for example “search phrase”.
  • Create custom excerpts that show where the hit was made, with the search terms highlighted.
  • Highlight search terms in the documents when user clicks through search results.
  • Search comments, tags, categories and custom fields.
  • Multisite friendly.
  • bbPress support.
  • Gutenberg friendly.

Advanced features

  • Adjust the weighting for titles, tags and comments.
  • Log queries, show most popular queries and recent queries with no hits.
  • Restrict searches to categories and tags using a hidden variable or plugin settings.
  • Index custom post types and custom taxonomies.
  • Index the contents of shortcodes.
  • Google-style “Did you mean?” suggestions based on successful user searches.
  • Support for WPML multi-language plugin and Polylang.
  • Support for s2member membership plugin, Members, Groups, Simple Membership and other membership plugins.
  • Advanced filtering to help hacking the search results the way you want.
  • Search result throttling to improve performance on large databases.
  • Disable indexing of post content and post titles with a simple filter hook.

Premium features (only in Relevanssi Premium)

  • Indexing attachment content (PDF, Office, Open Office).
  • Improved spelling correction in “Did you mean?” suggestions.
  • Searching across multiple sites in the same multisite installation.
  • Search and index user profiles.
  • Search and index taxonomy term pages (categories, tags, custom taxonomies).
  • Search and index arbitrary columns in wp_posts MySQL table.
  • Assign weights to any post types and taxonomies.
  • Assign extra weight to new posts.
  • Let the user choose between AND and OR searches, use + and – operator (AND and NOT).
  • Export and import settings.
  • WP CLI commands.
  • Related posts.
  • Redirects for searches.

Relevanssi in Facebook

You can find Relevanssi in Facebook.

Thanks

  • Cristian Damm for tag indexing, comment indexing, post/page exclusion and general helpfulness.
  • Marcus Dalgren for UTF-8 fixing.
  • Warren Tape for 2.5.5 fixes.
  • Mohib Ebrahim for relentless bug hunting.
  • John Calahan for extensive 4.0 beta testing.

Screenshots

  • Overview page
  • Indexing settings
  • Searching settings
  • Logging settings
  • Excerpts and highlights
  • Synonym settings
  • Stopword settings

Installation

  1. Install the plugin from the WordPress plugin screen.
  2. Activate the plugin.
  3. Go to the plugin settings page and build the index following the instructions there.
  4. That’s it!

Relevanssi uses the standard search form and doesn’t usually need any changes in the search results template.

If the search does not bring any results, your theme probably has a query_posts() call in the search results template. That throws Relevanssi off. For more information, see The most important Relevanssi debugging trick.

Uninstalling

To uninstall the plugin remove the plugin using the normal WordPress plugin management tools (from the Plugins page, first Deactivate, then Delete). If you remove the plugin files manually, the database tables and options will remain.

FAQ

Knowledge Base

You can find solutions and answers at the Relevanssi Knowledge Base.

Contextual help

Answers to many common problems can be found from the contextual menu. Just click “Help” in the top right corner of your WordPress admin dashboard on the Relevanssi settings page.

Relevanssi doesn’t work

If you the results don’t change after installing and activating Relevanssi, the most likely reason is that you have a call to query_posts() on your search results template. This confuses Relevanssi. Try removing the query_posts() call and see what happens.

Searching for words with ampersands or hyphens doesn’t work

Please read Words with punctuation can’t be found. This is a Relevanssi feature, but you can fix it from Relevanssi indexing settings.

Where are the user search logs?

See the top of the admin menu. There’s ‘User searches’.

Displaying the relevance score

Relevanssi stores the relevance score it uses to sort results in the $post variable. Just add something like

echo $post->relevance_score

to your search results template inside a PHP code block to display the relevance score.

Did you mean? suggestions

Relevanssi offers Google-style “Did you mean?” suggestions. See “Did you mean” suggestions in the Knowledge Base for more details.

What is tf * idf weighing?

It’s the basic weighing scheme used in information retrieval. Tf stands for term frequency while idf is inverted document frequency. Term frequency is simply the number of times the term appears in a document, while document frequency is the number of documents in the database where the term appears.

Thus, the weight of the word for a document increases the more often it appears in the document and the less often it appears in other documents.

What are stop words?

Each document database is full of useless words. All the little words that appear in just about every document are completely useless for information retrieval purposes. Basically, their inverted document frequency is really low, so they never have much power in matching. Also, removing those words helps to make the index smaller and searching faster.

Reviews

11 September 2020
Mikko is amazing!! Flatsome theme had recommended Relevanssi when I wanted to narrow down the search results in my store. After I set it up, there was a big problem... No results showed up. I sent a message via the contact form and immediately received a response! After a few emails back and forth, Mikko not only solved my problem but thoroughly explained what was going on. He went above and beyond!! Can't believe this plugin is free. If anyone has a need for the premium version - I highly recommend it! Support is excellent!
10 September 2020
The best search plugin out there! Works with custom post types. Mikko was super responsive and helpful with the issues I ran into with custom post types. I highly recommend Relavanssi.
14 August 2020
This is simply one of the best things that has happened to WordPress search-centric sites...keep it up
I use Relevanssi to make my search results come out exactly how I want them to. I have confidence that my users will be able to find the right content because of the powerful search and customizations that I can do with Relevanssi. I also recently posted in the support forum and heard back within one day with a fix to my problem. All this for a free plugin! Thank you Mikko.
4 August 2020
This is a really nice plugin, and it is clear that a huge amount of work went into building it. Thank you, Mikko. It would be great if there could be an indexing option to index all posts modified after a certain date rather than having to index all posts.
Read all 274 reviews

Contributors & Developers

“Relevanssi – A Better Search” is open source software. The following people have contributed to this plugin.

Contributors

“Relevanssi – A Better Search” has been translated into 10 locales. Thank you to the translators for their contributions.

Translate “Relevanssi – A Better Search” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Change log

4.8.2

  • New feature: New filter hook relevanssi_term_where lets you filter the term WHERE conditional for the search query.
  • Minor fix: Doing the document count updates asynchronously caused problems in some cases (eg. importing posts). Now the document count is only updated after a full indexing and once per week.
  • Minor fix: Phrase matching has been improved to make it possible to search for phrases that include characters like the ampersand.

4.8.1

  • Major fix: Changes in WooCommerce 4.4.0 broke the Relevanssi searches. This makes the WooCommerce search work again.
  • Minor fix: Excluding from logs didn’t work if user IDs had spaces between them (‘user_a, user_b’). Now the extra spaces don’t matter.
  • Minor fix: The asynchronous doc count action in the previous version could cause an infinite loop with the Snitch logger plugin. This is prevented now: the async action doesn’t run after indexing unless a post is actually indexed.
  • Minor fix: Relevanssi indexing procedure was triggered for autosaved drafts, causing possible problems with the asynchronous doc count action.
  • Minor fix: The relevanssi_index_custom_fields filter hook was not applied when doing phrase matching, thus phrases could not be found when they were in custom fields added with the filter.

4.8.0

  • Changed behaviour: Relevanssi now requires PHP 7.
  • Changed behaviour: Relevanssi now sorts strings with strnatcasecmp() instead of strcasecmp(), leading to a more natural results with strings that include numbers.
  • Changed behaviour: Relevanssi init is now moved from priority 10 to priority 1 on the init hook to avoid problems with missing TablePress compatibility.
  • New feature: New filter hook relevanssi_get_approved_comments_args filters the arguments to get_approved_comments in comment indexing. This can be used to index custom comment types, for example.
  • New feature: Content wrapped in the noindex tags is no longer used for excerpts.
  • New feature: The [et_pb_fullwidth_code] shortcode is now removed completely, including the contents, when Relevanssi is indexing and building excerpts.
  • Major fix: Relevanssi didn’t index new comments when they were added; when a post was indexed or the whole index rebuilt, comment content was included. We don’t know how long this bug has existed, but it is now fixed. Rebuild the index to get all comment content included in the index.
  • Minor fix: Autoload has been disabled for several options that are not needed often.
  • Minor fix: Phrase matching did not work correctly in visible custom fields.
  • Minor fix: TablePress support could cause halting errors if posts were inserted before Relevanssi has loaded itself (on init priority 10). These errors will no longer happen.
  • Minor fix: The doc count update, which is a heavy task, is now moved to an asynchronous action to avoid slowing down the site for users.
  • Minor fix: Relevanssi only updates doc count on relevanssi_insert_edit() when the post is indexed.

4.7.2

  • Minor fix: Media Library searches failed if Relevanssi was enabled in the WP admin, but the attachment post type wasn’t indexed. Relevanssi will no longer block the default Media Library search in these cases.
  • Minor fix: Adds more backwards compatibility for the relevanssi_indexing_restriction change, there’s now an alert on indexing tab if there’s a problem.

4.7.1

  • New feature: New filter hook relevanssi_post_content_after_shortcodes filters the post content after shortcodes have been processed but before the HTML tags are stripped.
  • Minor fix: Adds more backwards compatibility for the relevanssi_indexing_restriction change.

4.7.0

  • New feature: New filter hook relevanssi_admin_search_blocked_post_types makes it easy to block Relevanssi from searching a specific post type in the admin dashboard. There’s built-in support for Reusable Content Blocks rc_blocks post type, for example.
  • New feature: The reason why a post is not indexed is now stored in the _relevanssi_noindex_reason custom field.
  • Changed behaviour: The relevanssi_indexing_restriction filter hook has a changed format. Instead of a string value, the filter now expects an array with the MySQL query in the index ‘mysql’ and a reason in string format in ‘reason’. There’s some temporary backwards compatibility for this.
  • Changed behaviour: Relevanssi now applies minimum word length when tokenizing search query terms.
  • Changed behaviour: Content stopwords are removed from the search queries when doing excerpts and highlights. When Relevanssi uses the untokenized search terms for excerpt-building, stopwords are removed from those words. This should lead to better excerpts.
  • Minor fix: Improves handling of emoji in indexing. If the database supports emoji, they are allowed, otherwise they are encoded.

4.6.0

  • Changed behaviour: Phrases in OR search are now less restrictive. A search for ‘foo “bar baz”‘ used to only return posts with the “bar baz” phrase, but now also posts with just the word ‘foo’ will be returned.
  • Minor fix: User Access Manager showed drafts in search results for all users. This is now fixed.