SearchWP Documentation

Consulta la guía de instalación, explora la base de conocimiento, descubre los numerosos hooks de SearchWP

Comparación de Mods de Índice y Fuente

Los \SearchWP\Mods son interacciones diseñadas específicamente con las consultas de búsqueda de SearchWP.

Existen dos tipos principales de Mods:

Basado en índice
Aplicar modificación al índice en su totalidad
Basado en Fuente
Limitar la modificación a una única Fuente

La forma principal de especificar qué tipo de Mod estás implementando es pasar una Fuente (o el nombre de la Fuente) al instanciar un Mod.

Nota: esta es una comparación de las dos instanciaciones, ten en cuenta que estos Mods aún no hacen nada.

<?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 );

El primer Mod se ha instanciado de manera que se aplicará al Índice en su totalidad cuando se ejecute la consulta. En comparación, el segundo Mod se aplicará solo a una única Fuente.

Uso de un Mod basado en índice

Un Mod basado en índice solo tiene el Índice de SearchWP como contexto. Los Mods basados en índice deben limitarse a aquellos que solo necesitan ese contexto inmediato para realizar su trabajo.

Si bien es ciertamente posible realizar JOINs adicionales utilizando un Mod basado en índice, hacerlo puede resultar en tiempos de consulta aumentados que pueden no ser tan prevalentes con un Mod basado en Fuente.

Por ejemplo: un Mod basado en índice aplicable sería uno que agregue un peso 'bono' a una Fuente particular que se devuelva como resultado.

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;
} );

Con este Mod se otorgará un peso de relevancia 'bono' de 9999999 a todas las Entradas. Un caso de uso para un hook como este podría ser que desees que las Entradas tengan garantizado (casi) aparecer por encima de todas las demás Fuentes sin forzar explícitamente que las Fuentes se agrupen.

Uso de un Mod basado en Fuente

Los Mods basados en Fuente facilitan modificaciones de consulta que se aplican solo a una única Fuente. En este caso, ya existe un JOIN con la tabla de base de datos que define la Fuente, lo que abre nuevas posibilidades de modificación.

Por ejemplo: se puede usar un Mod basado en Fuente para excluir ciertas Entradas de los resultados de búsqueda si se ha cumplido alguna condición:

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 );

Usando este Mod, la Entrada 97 y 188 se excluyen de los resultados de búsqueda solo cuando $_GET['my_mod_trigger'] ha sido definido.

Otro ejemplo: se puede usar un Mod basado en Fuente para excluir Páginas con la palabra café en su Título:

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 );

Los Mods basados en Fuente son formas potentes y programáticas de modificar la forma en que SearchWP realiza sus búsquedas.

Cree hoy mismo una mejor experiencia de búsqueda en WordPress

No vuelva a perder visitantes por resultados de búsqueda inútiles. SearchWP facilita la creación de su propia búsqueda inteligente en WordPress.

Get SearchWP Now
Icono de múltiples motores de búsqueda