Skip to main content
MeteorGPLby WebbingApps

Relevanssi Premium

Plugin
Watch 0 Star 0
Install

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

  • 0 stars
  • 0 watching
  • 0 downloads
  • GPL-2.0-or-later

Versions 6

Newest first · every version scanned before publication
  1. 2.27.7 Latest

    Security: Relevanssi will now strip tags from excerpt text (keeping only the whitelisted tags) to avoid XSS attacks. An attack was possible... Release notes

    159 files 800.2 KB 14 changed +773 −634 Verified

  2. 2.27.5

    Security: Stop XSS attacks in comments when highlighting post content. Release notes

    157 files 793.4 KB 16 changed +40 −1,689 Verified

  3. 2.27.4.1

    Minor fix: Remove the update nag. Release notes

    161 files 823.2 KB 6 changed +56 −11 Verified

  4. 2.27.1

    Minor fix: Version 2.26.1 had broken the auto updates. This version fixes it. Release notes

    161 files 822.8 KB 21 changed +475 −220 Verified

  5. 2.26.1

    Security fix: Prevent an XSS attack by a malicious contributor. Release notes

    161 files 821.2 KB 30 changed +1,516 −456 Verified

  6. 2.25.2

    Security fix: Prevent CSV injection attack in log export. Release notes

    160 files 816.1 KB Verified

Show 210 versions not available yet

Releases named in the vendor’s changelog or on WordPress.org that the repository does not have yet.

  1. 2.30.3 Not available yet Release date not stated

    Security: Fixes a vulnerability where a contributor-level user could make a SQL injection.

    Changelog entry

  2. 2.30.2 Not available yet Release date not stated

    Minor fix: Fix errors from pinning queries.

    Changelog entry

  3. 2.30.1 Not available yet Release date not stated

    Minor fix: Remove complaints from metaqueries.

    Changelog entry

  4. 2.30.0 Not available yet Release date not stated

    New feature: Relevanssi now has a speech-to-text support using the Web Speech API.

    Changelog entry

  5. 2.29.1 Not available yet Release date not stated

    Changed behaviour: Exact match bonus was added to posts once per search term. Now it's applied once per post.

    Changelog entry

  6. 2.29.0 Not available yet Release date not stated

    Security: Fixes a vulnerability where a contributor-level user could make a SQL injection.

    Changelog entry

  7. 2.28.0 Not available yet Release date not stated

    New feature: The admin post list has a new column, 'Relevanssi', which has a cleaner, more compact view of the same features the previous co...

    Changelog entry

  8. 2.27.6 Not available yet Release date not stated

    Security: Exporting logs now checks for user capability. The default setting is 'manageoptions', but it can be adjusted with the relevanssio...

    Changelog entry

  9. 2.27.4 Not available yet Release date not stated

    New feature: New filter hook relevanssicachedpostobject can be used to modify the cached post objects.

    Changelog entry

  10. 2.27.3 Not available yet Release date not stated

    Minor fix: Make click-tracking code more error-resistant.

    Changelog entry

  11. 2.27.2 Not available yet Release date not stated

    Minor fix: Fix excerpts broken in 2.27.0.

    Changelog entry

  12. 2.27.0 Not available yet Release date not stated

    New feature: You can now set the rlvsource parameter in a search form and then filter the search logs based on that.

    Changelog entry

  13. 2.26.0 Not available yet Release date not stated

    New feature: New filter hook relevanssiforbiddenposttypes filters the list of post types excluded from Relevanssi indexing.

    Changelog entry

  14. 2.25.1 Not available yet Release date not stated

    Security fix: Relevanssi had a vulnerability where anyone could access the search logs and click logs. The log export is now protected.

    Changelog entry

  15. 2.25.0 Not available yet Release date not stated

    New feature: New filter hook relevanssisearchformdropdownargs filters the arguments for wpdropdowncategories() in search forms.

    Changelog entry

  16. 2.24.4 Not available yet Release date not stated

    Minor fix: Fixes broken taxonomy indexing.

    Changelog entry

  17. 2.24.3 Not available yet Release date not stated

    Security fix: Relevanssi had a vulnerability for SQL injections. Exploiting the vulnerability does require WP admin access. This vulnerabili...

    Changelog entry

  18. 2.24.2 Not available yet Release date not stated

    Minor fix: Fixes broken WP CLI progress bars.

    Changelog entry

  19. 2.24.1 Not available yet Release date not stated

    New feature: The debugging tab now shows the status of the 'relevanssiwords' option.

    Changelog entry

  20. 2.24.0 Not available yet Release date not stated

    New feature: New filter hook relevanssihighlightregex makes it possible to adjust the regex used for highlighting.

    Changelog entry

  21. 2.23.0 Not available yet Release date not stated

    New feature: Relevanssi can now create custom field specific excerpts that come from one custom field only and know which field that is.

    Changelog entry

  22. 2.22.0 Not available yet Release date not stated

    New feature: Logging now includes a session ID (based on user ID for logged-in users, HTTP user agent for others, and current time, stable f...

    Changelog entry

  23. 2.21.0 Not available yet Release date not stated

    New feature: You can now add weights to pinned terms to control the order of the pinned posts.

    Changelog entry

  24. 2.20.4 Not available yet Release date not stated

    New feature: New filter hook relevanssiblockedfieldtypes can be used to control which ACF field types are excluded from the index. By defaul...

    Changelog entry

  25. 2.20.3 Not available yet Release date not stated

    New feature: Relevanssi now has a debug mode that will help troubleshooting and support.

    Changelog entry

  26. 2.20.2 Not available yet Release date not stated

    Fixes the persistent update nag.

    Changelog entry

  27. 2.20.1 Not available yet Release date not stated

    New feature: New filter hook relevanssiaddhighlightandtracking can be used to force Relevanssi to add the highlight and tracking parameters...

    Changelog entry

  28. 2.20.0 Not available yet Release date not stated

    New feature: Relevanssi now shows the MySQL maxallowedpacket size on the debug tab.

    Changelog entry

  29. 2.19.1 Not available yet Release date not stated

    Minor fix: WooCommerce layered navigation compatibility caused enough problems that I've disabled it by default. You can enable it with addf...

    Changelog entry

  30. 2.19.0 Not available yet Release date not stated

    New feature: New CLI command listpinnedposts lists all pinned and unpinned posts.

    Changelog entry

  31. 2.18.0 Not available yet Release date not stated

    New feature: Oxygen compatibility has been upgraded to support JSON data from Oxygen 4. This is still in early stages, so feedback from Oxyg...

    Changelog entry

  32. 2.17.2 Not available yet Release date not stated

    New feature: If you have a valid license, you can now leave support requests from within the Relevanssi settings pages.

    Changelog entry

  33. 2.17.1 Not available yet Release date not stated

    New feature: New filter hook relevanssiupdatetranslations lets you disable the translation updates from TranslationsPress. If you only use W...

    Changelog entry

  34. 2.17.0 Not available yet Release date not stated

    New feature: 'Ignore post content' checkbox in the Relevanssi post edit sidebar makes Relevanssi ignore post content for that post when inde...

    Changelog entry

  35. 2.16.8 Not available yet Release date not stated

    One trailing comma caused Relevanssi to not work with PHP 7.2 or earlier. That is fixed, and Relevanssi is now again compatible with PHP 7.

    Changelog entry

  36. 2.16.7 Not available yet Release date not stated

    Minor fix: The relevanssiindextaxonomiesargs filter hook should've been removed from use long time ago, but it was still in use in some case...

    Changelog entry

  37. 2.16.6 Not available yet Release date not stated

    Minor fix: The translations would show up as requiring update, even after the update. This is now fixed.

    Changelog entry

  38. 2.16.5 Not available yet Release date not stated

    Security fix: Extra hardening for AJAX requests. Some AJAX actions in Relevanssi could leak information to site subscribers who knew what to...

    Changelog entry

  39. 2.16.4 Not available yet Release date not stated

    Security fix: Any registered user could empty the Relevanssi index by triggering the index truncate AJAX action. That is no longer possible.

    Changelog entry

  40. 2.16.3 Not available yet Release date not stated

    Security fix: User searches page had a XSS vulnerability.

    Changelog entry

  41. 2.16.2 Not available yet Release date not stated

    Minor fix: Remove unnecessary database calls from admin pages.

    Changelog entry

  42. 2.16.1 Not available yet Release date not stated

    Fixes an error on the post query insights screen.

    Changelog entry

  43. 2.16.0 Not available yet Release date not stated

    New feature: Click tracking lets you track the way the users click different posts from the search results pages. Enable the click tracking...

    Changelog entry

  44. 2.15.3.1 Not available yet Release date not stated

    Minor fix: The Bricks compatibility was broken, this version fixes it.

    Changelog entry

  45. 2.15.3 Not available yet Release date not stated

    New feature: You can add a post type dropdown to [searchform] forms with dropdown='posttype'.

    Changelog entry

  46. 2.15.2 Not available yet Release date not stated

    New feature: Adds support for Avada Live Search.

    Changelog entry

  47. 2.15.1 Not available yet Release date not stated

    New feature: New action hooks relevanssidisablestemmer and relevanssienablestemmer. Relevanssi-compatible stemmers should implement these ac...

    Changelog entry

  48. 2.15.0 Not available yet Release date not stated

    New feature: Relevanssi can now add Google-style missing term lists to the search results. You can either use the %missing% tag in the searc...

    Changelog entry

  49. 2.14.5 Not available yet Release date not stated

    New feature: New WP CLI command wp relevanssi removeattachmenterrors clears out all attachment reading errors.

    Changelog entry

  50. 2.14.4 Not available yet Release date not stated

    New feature: New action hooks relevanssiprethecontent and relevanssipostthecontent fire before and after Relevanssi applies thecontent filte...

    Changelog entry

  51. 2.14.3 Not available yet Release date not stated

    Major fix: Post type weights did not work; improving the caching had broken them.

    Changelog entry

  52. 2.14.2 Not available yet Release date not stated

    Major fix: Stops more problems with ACF custom field indexing.

    Changelog entry

  53. 2.14.1 Not available yet Release date not stated

    Major fix: Stops TypeError crashes from null custom field indexing.

    Changelog entry

  54. 2.14.0 Not available yet Release date not stated

    New feature: New filter hook relevanssiexcerptgap lets you adjust the first line of excerpt optimization.

    Changelog entry

  55. 2.13.1 Not available yet Release date not stated

    Major fix: User and taxonomy term search did not work correctly, thanks to a complicated mix of small issues that didn't show up in the auto...

    Changelog entry

  56. 2.13.0 Not available yet Release date not stated

    New feature: New filter hook relevanssirenderedblock filters Gutenberg block content after the block has been rendered with renderblock().

    Changelog entry

  57. 2.12.2 Not available yet Release date not stated

    New feature: You can force Relevanssi to be active by setting the query variable relevanssi to true. Thanks to Jan Willem Oostendorp.

    Changelog entry

  58. 2.12.1 Not available yet Release date not stated

    Major fix: The multilingual stopwords and synonyms were used based on the global language. Now when indexing posts, the post language is use...

    Changelog entry

  59. 2.12.0 Not available yet Release date not stated

    New feature: Relevanssi now supports multilingual synonyms and stopwords. Relevanssi now has a different set of synonyms and stopwords for e...

    Changelog entry

  60. 2.11.1 Not available yet Release date not stated

    Changed behaviour: The relevanssiexcerptpart filter hook now gets the post ID as a second parameter. The documentation for the filter has be...

    Changelog entry

  61. 2.11.0 Not available yet Release date not stated

    New feature: There's now a "Debugging" tab in the Relevanssi settings, letting you see how the Relevanssi index sees posts. This is familiar...

    Changelog entry

  62. 2.10.3 Not available yet Release date not stated

    New feature: Multisite searching now supports date parameters.

    Changelog entry

  63. 2.10.2 Not available yet Release date not stated

    New feature: Wildcard operators ? (any one letter) and (zero or more letters) can be used inside words, if enabled by setting the relevanss...

    Changelog entry

  64. 2.10.1 Not available yet Release date not stated

    New feature: New filter hook relevanssididyoumeanalphabet to replace the default Latin alphabet with something more suited to your site.

    Changelog entry

  65. 2.10.0 Not available yet Release date not stated

    Changed behaviour: Relevanssi now requires PHP 7.

    Changelog entry

  66. 2.9.0 Not available yet Release date not stated

    New feature: New function relevanssigetrelatedpostids() returns an array of related post IDs for a post.

    Changelog entry

  67. 2.8.2 Not available yet Release date not stated

    Minor fix: Using phrases in the post part targeting didn't work. It works much better now, but may still have some oddities in some cases.

    Changelog entry

  68. 2.8.1 Not available yet Release date not stated

    New feature: New filter hook relevanssipostcontentaftershortcodes filters the post content after shortcodes have been processed but before t...

    Changelog entry

  69. 2.8.0 Not available yet Release date not stated

    New feature: New filter hook relevanssiblocktorender makes it possible to filter Gutenberg blocks before they are rendered to HTML.

    Changelog entry

  70. 2.7.0 Not available yet Release date not stated

    Changed behaviour: Content stopwords are now applied to the attachment content.

    Changelog entry

  71. 2.6.1 Not available yet Release date not stated

    Minor fix: When using Gutenberg, pinning interface only worked for posts. Now it works for all indexed post types.

    Changelog entry

  72. 2.6.0 Not available yet Release date not stated

    New feature: New filter hook relevanssidisablestopwords can be used to disable stopwords completely. Just add a filter function that returns...

    Changelog entry

  73. 2.5.2 Not available yet Release date not stated

    Major fix: Makes Relevanssi Premium compatible with WP 4.9.

    Changelog entry

  74. 2.5.1 Not available yet Release date not stated

    Major fix: Returns the missing stopwords.

    Changelog entry

  75. 2.5.0 Not available yet Release date not stated

    New feature: You can now edit the read attachment content on the attachment edit pages.

    Changelog entry

  76. 2.4.4 Not available yet Release date not stated

    New feature: You can now give Gutenberg blocks a CSS class relevanssinoindex to exclude them from being indexed. Relevanssi will not index G...

    Changelog entry

  77. 2.4.3 Not available yet Release date not stated

    Major fix: Disabling updatepostmetadatacache seemed like a good optimization move for related posts, but it turns out it disables related po...

    Changelog entry

  78. 2.4.2 Not available yet Release date not stated

    New feature: New filter hook relevanssiindexingadjust can be used to stop Relevanssi from adjusting the number of posts indexed at once duri...

    Changelog entry

  79. 2.4.1 Not available yet Release date not stated

    New feature: SEOPress support, posts marked "noindex" in SEOPress are no longer indexed by Relevanssi by default.

    Changelog entry

  80. 2.4.0 Not available yet Release date not stated

    New feature: Multi-phrase searches now respect AND and OR operators. If multiple phrases are included in an OR search, any posts with at lea...

    Changelog entry

  81. 2.3.0 Not available yet Release date not stated

    New feature: Content stopwords are just like regular stopwords, but they are only applied to post content. They are not applied to titles, c...

    Changelog entry

  82. 2.2.5 Not available yet Release date not stated

    EXISTS and NOT EXISTS didn't work for taxonomy terms in searches.

    Changelog entry

  83. 2.2.4.2 Not available yet Release date not stated

    Fixes couple of JS issues with the metabox scripts.

    Changelog entry

  84. 2.2.4.1 Not available yet Release date not stated

    It's now possible to disable thumbnails and titles for related posts.

    Changelog entry

  85. 2.2.4 Not available yet Release date not stated

    New Related posts feature can be used to display related posts for your content.

    Changelog entry

  86. 2.2.3.1 Not available yet Release date not stated

    The new Redirects feature caused unforeseen consequences. This version should fix them.

    Changelog entry

  87. 2.2.3 Not available yet Release date not stated

    New Redirects feature lets you redirect keywords directly to specific result pages.

    Changelog entry

  88. 2.2.2.1 Not available yet Release date not stated

    Fixed broken "User searches" page.

    Changelog entry

  89. 2.2.2 Not available yet Release date not stated

    Relevanssi can now index Gutenberg reusable blocks. (This functionality broke once already before release, so that can happen, since Gutenbe...

    Changelog entry

  90. 2.2.1 Not available yet Release date not stated

    The admin search has been moved to a separate page and made visible to editors, authors and contributors.

    Changelog entry

  91. 2.2.0.1 Not available yet Release date not stated

    2.2 claimed to be version 2.1.7.

    Changelog entry

  92. 2.2 Not available yet Release date not stated

    New feature: Search tab on Relevanssi settings page allows you to perform searches in WP admin using Relevanssi.

    Changelog entry

  93. 2.1.7 Not available yet Release date not stated

    The API key option in the network options wasn't very intuitive. It's better now.

    Changelog entry

  94. 2.1.6.1 Not available yet Release date not stated

    The privacy features caused an error notice with certain Relevanssi configurations, and the plugin required WP 4.9.6.

    Changelog entry

  95. 2.1.6 Not available yet Release date not stated

    Privacy: If you log search queries, Relevanssi will suggest some additional content to your privacy policy page.

    Changelog entry

  96. 2.1.5 Not available yet Release date not stated

    New feature: WooCommerce product visibility can now be considered better in the indexing. See the filter hook 'relevanssiwoocommerceindexing...

    Changelog entry

  97. 2.1.4 Not available yet Release date not stated

    Fixed cases where Relevanssi added an ellipsis even if the excerpt was from the start of the post.

    Changelog entry

  98. 2.1.3 Not available yet Release date not stated

    Recent post bonus is now applied to searches.

    Changelog entry

  99. 2.1.2 Not available yet Release date not stated

    MemberPress post control was backwards.

    Changelog entry

  100. 2.1.1.1 Not available yet Release date not stated

    Fixes an issue where you can't save taxonomy indexing settings.

    Changelog entry

All 210 releases not available yet, in the changelog

Relevanssi Premium

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

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.

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.

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.
  • Automatic support for WPML multi-language plugin.
  • Automatic support for various 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.
  • Multisite support.

Premium features (only in Relevanssi Premium)

  • PDF content indexing.
  • Search result throttling to improve performance on large databases.
  • Improved spelling correction in "Did you mean?" suggestions.
  • Searching over multiple subsites in one multisite installation.
  • Indexing and searching user profiles.
  • Weights for post types, including custom post types.
  • Limit searches with custom fields.
  • Index internal links for the target document (sort of what Google does).
  • Search using multiple taxonomies at the same time.

Relevanssi is available in two versions, regular and Premium. Regular Relevanssi is and will remain free to download and use. Relevanssi Premium comes with a cost, but will get all the new features. Standard Relevanssi will be updated to fix bugs, but new features will mostly appear in Premium. Also, support for standard Relevanssi depends very much on my mood and available time. Premium pricing includes support.

Other search plugins

Relevanssi owes a lot to wpSearch by Kenny Katzgrau. Relevanssi was built to replace wpSearch, when it started to fail.

What it adds

  • Shortcodes: [noindex] [relevanssi_related_posts] [search] [searchform]
  • WP-CLI: relevanssi
  • Integrates with WooCommerce

Installation

  1. Extract all files from the ZIP file, and then upload the plugin's folder to /wp-content/plugins/.
  2. If your blog is in English, skip to the next step. If your blog is in other language, rename the file stopwords in the plugin directory as something else or remove it. If there is stopwords.yourlanguage, rename it to stopwords.
  3. Activate the plugin through the 'Plugins' menu in WordPress.
  4. Go to the plugin settings and build the index following the instructions there.

To update your installation, simply overwrite the old files with the new, activate the new version and if the new version has changes in the indexing, rebuild the index.

Note on updates

If it seems the plugin doesn't work after an update, the first thing to try is deactivating and reactivating the plugin. If there are changes in the database structure, those changes do not happen without a deactivation, for some reason.

Changes to templates

None necessary! 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.

How to index

Check the options to make sure they're to your liking, then click "Save indexing options and build the index". If everything's fine, you'll see the Relevanssi options screen again with a message "Indexing successful!"

If something fails, usually the result is a blank screen. The most common problem is a timeout: server ran out of time while indexing. The solution to that is simple: just return to Relevanssi screen (do not just try to reload the blank page) and click "Continue indexing". Indexing will continue. Most databases will get indexed in just few clicks of "Continue indexing". You can follow the process in the "State of the Index": if the amount of documents is growing, the indexing is moving along.

If the indexing gets stuck, something's wrong. I've had trouble with some plugins, for example Flowplayer video player stopped indexing. I had to disable the plugin, index and then activate the plugin again. Try disabling plugins, especially those that use shortcodes, to see if that helps. Relevanssi shows the highest post ID in the index - start troubleshooting from the post or page with the next highest ID. Server error logs may be useful, too.

Using custom search results

If you want to use the custom search results, make sure your search results template uses the_excerpt() to display the entries, because the plugin creates the custom snippet by replacing the post excerpt.

If you're using a plugin that affects excerpts (like Advanced Excerpt), you may run into some problems. For those cases, I've included the function relevanssi_the_excerpt(), which you can use instead of the_excerpt(). It prints out the excerpt, but doesn't apply wp_trim_excerpt() filters (it does apply the_content(), the_excerpt(), and get_the_excerpt() filters).

To avoid trouble, use the function like this:

<?php if (function_exists('relevanssi_the_excerpt')) { relevanssi_the_excerpt(); }; ?>

See Frequently Asked Questions for more instructions on what you can do with Relevanssi.

The advanced hacker option

If you're doing something unusual with your search and Relevanssi doesn't work, try using relevanssi_do_query(). See Knowledge Base.

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.

Combining with other plugins

Relevanssi doesn't work with plugins that rely on standard WP search. Those plugins want to access the MySQL queries, for example. That won't do with Relevanssi. Search Light, for example, won't work with Relevanssi.

Some plugins cause problems when indexing documents. These are generally plugins that use shortcodes to do something somewhat complicated. One such plugin is MapPress Easy Google Maps. When indexing, you'll get a white screen. To fix the problem, disable either the offending plugin or shortcode expansion in Relevanssi while indexing. After indexing, you can activate the plugin again.

Faq

Where is the Relevanssi search box widget?

There is no Relevanssi search box widget.

Just use the standard search box.

Where are the user search logs?

See the top of the admin menu. There's 'User searches'. There. If the logs are empty, please note showing the results needs at least MySQL 5.

Displaying the number of search results found

The typical solution to showing the number of search results found does not work with Relevanssi. However, there's a solution that's much easier: the number of search results is stored in a variable within $wp_query. Just add the following code to your search results template:

<?php echo 'Relevanssi found ' . $wp_query->found_posts . ' hits'; ?>

Advanced search result filtering

If you want to add extra filters to the search results, you can add them using a hook. Relevanssi searches for results in the _relevanssi table, where terms and post_ids are listed. The various filtering methods work by listing either allowed or forbidden post ids in the query WHERE clause. Using the relevanssi_where hook you can add your own restrictions to the WHERE clause.

These restrictions must be in the general format of AND doc IN (' . {a list of post ids, which could be a subquery} . ')

For more details, see where the filter is applied in the relevanssi_search() function. This is stricly an advanced hacker option for those people who're used to using filters and MySQL WHERE clauses and it is possible to break the search results completely by doing something wrong here.

There's another filter hook, relevanssi_hits_filter, which lets you modify the hits directly. The filter passes an array, where index 0 gives the list of hits in the form of an array of post objects and index 1 has the search query as a string. The filter expects you to return an array containing the array of post objects in index 0 (return array($your_processed_hit_array)).

Direct access to query engine

Relevanssi can't be used in any situation, because it checks the presence of search with the is_search() function. This causes some unfortunate limitations and reduces the general usability of the plugin.

You can now access the query engine directly. There's a new function relevanssi_do_query(), which can be used to do search queries just about anywhere. The function takes a WP_Query object as a parameter, so you need to store all the search parameters in the object (for example, put the search terms in $your_query_object->query_vars['s']). Then just pass the WP_Query object to Relevanssi with relevanssi_do_query($your_wp_query_object);.

Relevanssi will process the query and insert the found posts as $your_query_object->posts. The query object is passed as reference and modified directly, so there's no return value. The posts array will contain all results that are found.

Sorting search results

If you want something else than relevancy ranking, you can use orderby and order parameters. Orderby accepts $post variable attributes and order can be "asc" or "desc". The most relevant attributes here are most likely "post_date" and "comment_count".

If you want to give your users the ability to sort search results by date, you can just add a link to http://www.yourblogdomain.com/?s=search-term&orderby=post_date&order=desc to your search result page.

Order by relevance is either orderby=relevance or no orderby parameter at all.

Filtering results by date

You can specify date limits on searches with by_date search parameter. You can use it your search result page like this: http://www.yourblogdomain.com/?s=search-term&by_date=1d to offer your visitor the ability to restrict their search to certain time limit (see RAPLIQ for a working example).

The date range is always back from the current date and time. Possible units are hour (h), day (d), week (w), month (m) and year (y). So, to see only posts from past week, you could use by_date=7d or by_date=1w.

Using wrong letters for units or impossible date ranges will lead to either defaulting to date or no results at all, depending on case.

Thanks to Charles St-Pierre for the idea.

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

To use Google-style "did you mean?" suggestions, first enable search query logging. The suggestions are based on logged queries, so without good base of logged queries, the suggestions will be odd and not very useful.

To use the suggestions, add the following line to your search result template, preferably before the have_posts() check:

<?php if (function_exists('relevanssi_didyoumean')) { relevanssi_didyoumean(get_search_query(), "<p>Did you mean: ", "?</p>", 5); }?>

The first parameter passes the search term, the second is the text before the result, the third is the text after the result and the number is the amount of search results necessary to not show suggestions. With the default value of 5, suggestions are not shown if the search returns more than 5 hits.

Search shortcode

Relevanssi also adds a shortcode to help making links to search results. That way users can easily find more information about a given subject from your blog. The syntax is simple:

[search]John Doe[/search]

This will make the text John Doe a link to search results for John Doe. In case you want to link to some other search term than the anchor text (necessary in languages like Finnish), you can use:

[search term="John Doe"]Mr. John Doe[/search]

Now the search will be for John Doe, but the anchor says Mr. John Doe.

One more parameter: setting [search phrase="on"] will wrap the search term in quotation marks, making it a phrase. This can be useful in some cases.

Restricting searches to categories and tags

Relevanssi supports the hidden input field cat to restrict searches to certain categories (or tags, since those are pretty much the same). Just add a hidden input field named cat in your search form and list the desired category or tag IDs in the value field - positive numbers include those categories and tags, negative numbers exclude them.

This input field can only take one category or tag id (a restriction caused by WordPress, not Relevanssi). If you need more, use cats and use a comma-separated list of category IDs.

You can also set the restriction from general plugin settings (and then override it in individual search forms with the special field). This works with custom taxonomies as well, just replace cat with the name of your taxonomy.

If you want to restrict the search to categories using a dropdown box on the search form, use a code like this:

` Search

<input type="submit" id="searchsubmit" value="Search" />
</div>

This produces a search form with a dropdown box for categories. Do note that this code won't work when placed in a Text widget: either place it directly in the template or use a PHP widget plugin to get a widget that can execute PHP code.

Restricting searches with taxonomies

You can use taxonomies to restrict search results to posts and pages tagged with a certain taxonomy term. If you have a custom taxonomy of "People" and want to search entries tagged "John" in this taxonomy, just use ?s=keyword&people=John in the URL. You should be able to use an input field in the search form to do this, as well - just name the input field with the name of the taxonomy you want to use.

It's also possible to do a dropdown for custom taxonomies, using the same function. Just adjust the arguments like this:

wp_dropdown_categories(array('show_option_all' => 'All people', 'name' => 'people', 'taxonomy' => 'people'));

This would do a dropdown box for the "People" taxonomy. The 'name' must be the keyword used in the URL, while 'taxonomy' has the name of the taxonomy.

Automatic indexing

Relevanssi indexes changes in documents as soon as they happen. However, changes in shortcoded content won't be registered automatically. If you use lots of shortcodes and dynamic content, you may want to add extra indexing. Here's how to do it:

if (!wp_next_scheduled('relevanssi_build_index')) { wp_schedule_event( time(), 'daily', 'relevanssi_build_index' ); }

Add the code above in your theme functions.php file so it gets executed. This will cause WordPress to build the index once a day. This is an untested and unsupported feature that may cause trouble and corrupt index if your database is large, so use at your own risk. This was presented at forum.

Highlighting terms

Relevanssi search term highlighting can be used outside search results. You can access the search term highlighting function directly. This can be used for example to highlight search terms in structured search result data that comes from custom fields and isn't normally highlighted by Relevanssi.

Just pass the content you want highlighted through relevanssi_highlight_terms() function. The content to highlight is the first parameter, the search query the second. The content with highlights is then returned by the function. Use it like this:

if (function_exists('relevanssi_highlight_terms')) { echo relevanssi_highlight_terms($content, get_search_query()); } else { echo $content; }

Multisite searching

To search multiple blogs in the same WordPress network, use the searchblogs argument. You can add a hidden input field, for example. List the desired blog ids as the value. For example, searchblogs=1,2,3 would search blogs 1, 2, and 3.

The features are very limited in the multiblog search, none of the advanced filtering works, and there'll probably be fairly serious performance issues if searching common words from multiple blogs.

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.

Upgrade Notice

2.27.7

  • Security fix against a XSS vulnerability.

Install

composer require meteorgpl-plugin/relevanssi-premium

The vendor’s license checks are intact: activate the plugin in WordPress with a license key bought from the vendor.

License

Declared license: GPL-2.0-or-later. The code is redistributed under the license the vendor declared in the plugin’s own headers. License profile: gpl-full.

Artwork, fonts, media and documents that may be licensed separately are not redistributed; the licensing page explains what is replaced or removed, and the security tab lists it per version. Support and update entitlement come with the license you buy from the vendor.

Send feedback

What works, what does not, what is missing: a few words help.

Only if you would like a reply.

Taken in your browser, without this window. Passwords, what you typed into forms, keys and tokens are left out as grey blocks; you can hide more before sending. We keep screenshots for 90 days.

We store it with the page address, your language, window size, browser and IP address, and your e-mail address if you give one. The IP address and browser are deleted after 90 days. Privacy policy.

All languages