SearchWP Documentation

Consultez le guide d’installation, parcourez la base de connaissances, découvrez les nombreux hooks de SearchWP

Comparer les mods d'index et de source

Les \SearchWP\Mods sont des interactions spécialement conçues avec les requêtes de recherche SearchWP.

Il existe deux types principaux de Mods :

Basé sur l'index
Appliquer la modification à l'ensemble de l'index
Basé sur la source
Limiter la modification à une seule Source

La principale façon de spécifier le type de Mod que vous implémentez est de passer une Source (ou un nom de Source) lors de l'instanciation d'un Mod.

Remarque : il s'agit d'une comparaison des deux instanciations, notez que ces Mods ne font actuellement rien.

<?php
// @link https://searchwp.com/documentation/knowledge-base/comparing-index-source-mods/
// Instantiate an index Mod that applies to the entire index.
$mod = new \SearchWP\Mod();
// Instantiate a Source Mod that applies only to Posts.
$source = \SearchWP\Utils::get_post_type_source_name( 'post' );
$mod = new \SearchWP\Mod( $source );

Le premier Mod a été instancié de manière à s'appliquer à l'ensemble de l'index lorsque la requête s'exécute. En comparaison, le second Mod ne s'appliquera qu'à une seule Source.

Utilisation d'un Mod basé sur l'index

Un Mod basé sur l'index n'a que l'index SearchWP comme contexte. Les Mods basés sur l'index doivent être limités à ceux qui n'ont besoin que de ce contexte immédiat pour accomplir leur tâche.

Bien qu'il soit certainement possible d'effectuer des JOINs supplémentaires à l'aide d'un Mod basé sur l'index, le faire peut entraîner une augmentation des temps de requête qui peut ne pas être aussi prévalente avec un Mod basé sur la source.

Par exemple : un Mod basé sur l'index applicable serait celui qui ajoute un poids « bonus » à une Source particulière retournée comme résultat.

All hooks should be added to your custom SearchWP Customizations Plugin.

<?php
// @link https://searchwp.com/documentation/knowledge-base/comparing-index-source-mods/
// Add relevance weight to a single SearchWP Source (Posts).
add_filter( 'searchwp\query\mods', function( $mods ) {
global $wpdb;
$mod = new \SearchWP\Mod();
$source = \SearchWP\Utils::get_post_type_source_name( 'post' );
$mod->weight( $wpdb->prepare( "IF(s.source = %s, 9999999, 0)", $source ) );
$mods[] = $mod;
return $mods;
} );

Avec ce Mod, un poids de pertinence « bonus » de 9999999 sera accordé à tous les Posts. Un cas d'utilisation pour un hook comme celui-ci pourrait être que vous souhaitez que les Posts soient (presque) garantis d'apparaître au-dessus de toutes les autres Sources sans forcer explicitement les Sources à être regroupées.

Utilisation d'un Mod basé sur la source

Les Mods basés sur la source facilitent les modifications de requête qui ne s'appliquent qu'à une seule Source. Dans ce cas, il existe déjà une JOIN avec la table de base de données qui définit la Source, ce qui ouvre de nouvelles possibilités de modification.

Par exemple : un Mod basé sur la source peut être utilisé pour exclure certains Posts des résultats de recherche si une condition a été remplie :

All hooks should be added to your custom SearchWP Customizations Plugin.

<?php
// @link https://searchwp.com/documentation/knowledge-base/comparing-index-source-mods/
add_filter( 'searchwp\query\mods', function( $mods ) {
if ( ! isset( $_GET['my_mod_trigger'] ) ) {
return $mods;
}
// Exclude Posts 97 and 188 from search results.
$source = \SearchWP\Utils::get_post_type_source_name( 'post' );
$mod = new \SearchWP\Mod( $source );
$mod->set_where( [ [
'column' => 'ID',
'value' => ['97', '188'],
'compare' => 'NOT IN',
'type' => 'NUMERIC'
] ] );
$mods[] = $mod;
return $mods;
}, 30, 2 );

En utilisant ce Mod, les Posts 97 et 188 sont exclus des résultats de recherche uniquement lorsque $_GET['my_mod_trigger'] a été défini.

Autre exemple : un Mod basé sur la source peut être utilisé pour exclure les Pages dont le titre contient le mot café :

All hooks should be added to your custom SearchWP Customizations Plugin.

<?php
// @link https://searchwp.com/documentation/knowledge-base/comparing-index-source-mods/
add_filter( 'searchwp\query\mods', function( $mods ) {
// Exclude Pages with 'coffee' in the Title.
$source = \SearchWP\Utils::get_post_type_source_name( 'page' );
$mod = new \SearchWP\Mod( $source );
$mod->set_where( [ [
'column' => 'post_title',
'value' => 'coffee',
'compare' => 'LIKE',
] ] );
$mods[] = $mod;
return $mods;
}, 30, 2 );

Les Mods basés sur la source sont des moyens puissants et programmatiques de modifier la façon dont SearchWP effectue ses recherches.

Créez dès aujourd'hui une meilleure expérience de recherche WordPress

Ne perdez plus jamais de visiteurs à cause de résultats de recherche inutiles. SearchWP rend la création de votre propre recherche WordPress intelligente rapide et facile.

Get SearchWP Now
Icône de moteurs de recherche multiples