Relevanssi Premium has support for in-query Boolean operators. Relevanssi uses + and – for the operators: cats -dogs
and cats +kittens
.
If you prefer instead to use the verbal AND and NOT operators, it only takes one small function. Add this to your site:
add_filter( 'relevanssi_search_filters', 'rlv_boolean_operators' ); function rlv_boolean_operators( $args ) { $args['q'] = str_replace( ' and ', ' +', $args['q'] ); $args['q'] = str_replace( ' not ', ' -', $args['q'] ); return $args; }
This function (on the relevanssi_search_filters
hook) looks at the search query and replaces the word “AND” with a + sign and the word “NOT” with a – sign. A search query can now say “cats NOT dogs
“, and that gets interpreted as “cats -dogs
“, which Relevanssi understands.
Is there an operator to use where you only want posts that have x AND y in their keywords, not all posts with x OR y in them?
You can set the default operator to AND in Relevanssi settings.
Is there an OR operator if you change the default to AND?
Bill, no; it would be actually rather complicated to do it that way.
Hi Mikko, I tested using the AND operator and using 2 terms, like: ‘ cars and bikes’ is throwing results with one of each words. Maybe it is because Im using the free version?
Is this working fine on the Premium?
thanks!
Gus, there’s no AND operator like that in Relevanssi. You choose the operator from the searching settings. If you set the operator to “AND” from the searching settings and search for “cars bikes”, you will get results that have both words.
In Premium, you can set the operator to OR from settings and then do a search for “cars +bikes” or “bikes +cars” to get results with both words.