[ 'should' => [ [ 'multi_match' => [ 'query' => $search_term, 'type' => 'phrase', 'fields' => $search_fields, /** This filter is documented in /includes/classes/SearchAlgorithm/Basic.php */ 'boost' => apply_filters( "ep_{$indexable_slug}_match_phrase_boost", 3, $search_fields, $query_vars ), ], ], [ 'multi_match' => [ 'query' => $search_term, 'fields' => $search_fields, 'operator' => 'and', /** This filter is documented in /includes/classes/SearchAlgorithm/Basic.php */ 'boost' => apply_filters( "ep_{$indexable_slug}_match_boost", 1, $search_fields, $query_vars ), /** * Filter fuzziness for match query * * @hook ep_{$indexable_slug}_match_fuzziness * @since 4.3.0 * @param {string|int} $fuzziness Fuzziness * @param {array} $search_fields Search fields * @param {array} $query_vars Query variables * @return {string} New fuzziness */ 'fuzziness' => apply_filters( "ep_{$indexable_slug}_match_fuzziness", 'auto', $search_fields, $query_vars ), ], ], [ 'multi_match' => [ 'query' => $search_term, 'type' => 'cross_fields', 'fields' => $search_fields, /** * Filter boost for match cross_fields query * * @hook ep_{$indexable_slug}_match_cross_fields_boost * @since 4.3.0 * @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_cross_fields_boost", 1, $search_fields, $query_vars ), 'analyzer' => 'standard', 'tie_breaker' => 0.5, 'operator' => 'and', ], ], ], ], ]; $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; } /** This filter is documented in /includes/classes/SearchAlgorithm/Basic.php */ $query['bool']['should'][0]['multi_match']['boost'] = apply_filters_deprecated( 'ep_match_phrase_boost', [ 3, $search_fields, $query_vars ], '4.3.0', 'ep_post_match_phrase_boost' ); /** This filter is documented in /includes/classes/SearchAlgorithm/Basic.php */ $query['bool']['should'][1]['multi_match']['boost'] = apply_filters_deprecated( 'ep_match_boost', [ 1, $search_fields, $query_vars ], '4.3.0', 'ep_post_match_boost' ); /** * Filter fuzziness for post match query * * This filter exists to keep backwards-compatibility. Newer implementations should use `ep_post_match_fuzziness`. * * @hook ep_match_fuzziness * @since 4.0.0 * @param {string|int} $fuzziness Fuzziness * @param {array} $search_fields Search fields * @param {array} $query_vars Query variables * @return {string} New fuzziness */ $query['bool']['should'][1]['multi_match']['fuzziness'] = apply_filters_deprecated( 'ep_match_fuzziness', [ 'auto', $search_fields, $query_vars ], '4.3.0', 'ep_post_match_fuzziness' ); /** * Filter boost for post match cross_fields query * * This filter exists to keep backwards-compatibility. Newer implementations should use `ep_post_match_cross_fields_boost`. * * @hook ep_{$indexable_slug}_match_cross_fields_boost * @since 4.0.0 * @param {int} $boost Boost * @param {array} $search_fields Search fields * @param {array} $query_vars Query variables * @return {int} New boost */ $query['bool']['should'][2]['multi_match']['boost'] = apply_filters_deprecated( 'ep_match_cross_fields_boost', [ 1, $search_fields, $query_vars ], '4.3.0', 'ep_post_match_cross_fields_boost' ); return $query; } }