SearchWP Documentation

Sehen Sie sich die Installationsanleitung an, durchsuchen Sie die Wissensdatenbank und erfahren Sie mehr über die vielen Hooks von SearchWP

Vergleich von Index- und Quell-Mods

\SearchWP\Mods sind speziell entwickelte Interaktionen mit SearchWP-Suchanfragen.

Es gibt zwei Haupttypen von Mods:

Indexbasiert
Wendet Modifikation auf den Index als Ganzes an
Quelle-basiert
Beschränkt die Modifikation auf eine einzelne Quelle

Der primäre Weg, um anzugeben, welchen Typ von Mod Sie implementieren, ist die Übergabe einer Quelle (oder eines Quelle-Namens) bei der Instanziierung eines Mods.

Hinweis: Dies ist ein Vergleich der beiden Instanziierungen. Beachten Sie, dass diese Mods noch nichts tatsächlich tun.

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

Der erste Mod wurde so instanziiert, dass er für den gesamten Index gilt, wenn die Abfrage ausgeführt wird. Im Vergleich dazu gilt der zweite Mod nur für eine einzelne Quelle.

Verwendung eines indexbasierten Mods

Ein indexbasierter Mod hat nur den SearchWP-Index als Kontext. Indexbasierte Mods sollten auf diejenigen beschränkt werden, die nur diesen unmittelbaren Kontext benötigen, um ihre Aufgabe zu erfüllen.

Obwohl es durchaus möglich ist, zusätzliche JOINs mit einem indexbasierten Mod durchzuführen, kann dies zu erhöhten Abfragezeiten führen, die bei einem Quelle-basierten Mod möglicherweise nicht so stark ins Gewicht fallen.

Zum Beispiel: Ein anwendbarer indexbasierter Mod wäre einer, der einer bestimmten Quelle, die als Ergebnis zurückgegeben wird, ein „Bonus“-Gewicht hinzufügt.

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

Mit diesem Mod wird allen Posts ein „Bonus“-Relevanzgewicht von 9999999 gewährt. Ein Anwendungsfall für einen solchen Hook könnte sein, dass Sie möchten, dass Posts (fast) garantiert über allen anderen Quellen angezeigt werden, ohne Quellen explizit zum Gruppieren zu zwingen.

Verwendung eines quellbasierten Mods

Quellbasierte Mods erleichtern Abfragemodifikationen, die nur für eine einzelne Quelle gelten. In diesem Fall existiert bereits ein JOIN mit der Datenbanktabelle, die die Quelle definiert, was neue Möglichkeiten zur Modifikation eröffnet.

Zum Beispiel: Ein quellbasierter Mod kann verwendet werden, um bestimmte Posts von Suchergebnissen auszuschließen, wenn eine bestimmte Bedingung erfüllt wurde:

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

Mit diesem Mod werden Post 97 und 188 von Suchergebnissen ausgeschlossen, nur wenn $_GET['my_mod_trigger'] definiert wurde.

Ein weiteres Beispiel: Ein quellbasierter Mod kann verwendet werden, um Seiten mit dem Wort Kaffee in ihrem Titel auszuschließen:

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

Quellbasierte Mods sind mächtige, programmatische Wege, um die Art und Weise zu modifizieren, wie SearchWP seine Suchen durchführt.

Erstellen Sie noch heute eine bessere WordPress-Sucherfahrung

Verlieren Sie nie wieder Besucher an unzureichende Suchergebnisse. SearchWP macht die Erstellung Ihrer eigenen intelligenten WordPress-Suche schnell und einfach.

Get SearchWP Now
Symbol für mehrere Suchmaschinen