[ 'should' => [ [ 'multi_match' => [ 'query' => $search_term, 'type' => 'phrase', 'fields' => $search_fields, /** * Filter match phrase boost amount * * @since 4.3.0 * @hook ep_{$indexable_slug}_match_phrase_boost * @param {int} $boost Phrase boost * @param {array} $search_fields Search fields * @param {array} $query_vars Query variables * @return {int} New boost amount */ 'boost' => apply_filters( "ep_{$indexable_slug}_match_phrase_boost", 4, $search_fields, $query_vars ), ], ], [ 'multi_match' => [ 'query' => $search_term, 'fields' => $search_fields, /** * Filter match boost amount * * @since 4.3.0 * @hook ep_{$indexable_slug}_match_boost * @param {int} $boost Boost * @param {array} $search_fields Search fields * @param {array} $query_vars Query variables * @return {int} New boost */ 'boost' => apply_filters( "ep_{$indexable_slug}_match_boost", 2, $search_fields, $query_vars ), 'fuzziness' => 0, 'operator' => 'and', ], ], [ 'multi_match' => [ 'fields' => $search_fields, 'query' => $search_term, /** * Filter fuzziness amount * * @since 4.3.0 * @hook ep_{$indexable_slug}_fuzziness_arg * @param {int} $fuzziness Fuzziness * @param {array} $search_fields Search fields * @param {array} $query_vars Query variables * @return {int} New fuzziness */ 'fuzziness' => apply_filters( "ep_{$indexable_slug}_fuzziness_arg", 1, $search_fields, $query_vars ), ], ], ], ], ]; $query = $this->apply_legacy_filters( $query, $indexable_slug, $search_fields, $query_vars ); return $query; } /** * Apply legacy filters. * * @param array $query ES `query` * @param string $indexable_slug Indexable slug * @param array $search_fields Search term(s) * @param array $query_vars Query vars * @return array ES `query` */ protected function apply_legacy_filters( array $query, string $indexable_slug, array $search_fields, array $query_vars ): array { if ( 'post' !== $indexable_slug ) { return $query; } /** * Filter boost for post match phrase query. * * This filter exists to keep backwards-compatibility. Newer implementations should use `ep_post_match_phrase_boost`. * * @hook ep_match_phrase_boost * @param {int} $boost Phrase boost * @param {array} $search_fields Search fields * @param {array} $query_vars Query variables * @return {int} New boost amount */ $query['bool']['should'][0]['multi_match']['boost'] = apply_filters_deprecated( 'ep_match_phrase_boost', [ $query['bool']['should'][0]['multi_match']['boost'], $search_fields, $query_vars ], '4.3.0', 'ep_post_match_phrase_boost' ); /** * Filter boost for post match query * * This filter exists to keep backwards-compatibility. Newer implementations should use `ep_post_match_boost`. * * @hook ep_match_boost * @param {int} $boost Boost * @param {array} $search_fields Search fields * @param {array} $query_vars Query variables * @return {int} New boost */ $query['bool']['should'][1]['multi_match']['boost'] = apply_filters_deprecated( 'ep_match_boost', [ $query['bool']['should'][1]['multi_match']['boost'], $search_fields, $query_vars ], '4.3.0', 'ep_post_match_boost' ); /** * Filter fuzziness for post query * * This filter exists to keep backwards-compatibility. Newer implementations should use `ep_post_fuzziness_arg`. * * @hook ep_fuzziness_arg * @param {int} $fuzziness Fuzziness * @param {array} $search_fields Search fields * @param {array} $query_vars Query variables * @return {int} New fuzziness */ $query['bool']['should'][2]['multi_match']['fuzziness'] = apply_filters_deprecated( 'ep_fuzziness_arg', [ $query['bool']['should'][2]['multi_match']['fuzziness'], $search_fields, $query_vars ], '4.3.0', 'ep_post_fuzziness_arg' ); return $query; } }