Increasing weight for HTML tags
Relevanssi ignores HTML tags when indexing posts. If you want to give more weight to words that appear in specific HTML tags (like headings), here is one way to do that. You can add this filter function on your site to the theme functions.php
or in a code snippet:
add_filter( 'relevanssi_post_content', 'rlv_html_tag_boost' ); function rlv_html_tag_boost( $content ) { $weightings = array( 'h1' => 5, 'h2' => 4, 'h3' => 2, 'strong' => 1, ); foreach ( $weightings as $tag => $weight ) { if ( preg_match_all( "#<$tag.*?>(.*?)</$tag>#", $content, $elements ) ) { foreach ( $elements[1] as $el_content ) { while ( 0 < $weight-- ) { $content .= " $el_content"; } } } } return $content; }
This code goes through the post content during the indexing with the relevanssi_post_content
filter hook. When it finds content that appears inside the HTML tags specified in the $weightings
array, it will add the content inside those tags multiple times in the post content (as determined by the numbers in the $weightings
array). This multiplication will increase the weight of those words in the Relevanssi index because Relevanssi counts how many times each word appears in each document.
Thanks to Greg Perham from Swing Graphics for this clever solution for easily adjusting the weights.