Definieren Sie die sekundäre Sortierung für Ergebnisse mit übereinstimmender Relevanz
Es wird Zeiten geben, in denen die Relevanz mehrerer Suchergebnisse exakt gleich ist, sodass MySQL entscheiden muss, wie diese Ergebnisse mit gleicher Relevanz sortiert werden.
Mit einem \SearchWP\Mod können Sie stattdessen angeben, wie Ergebnisse mit gleicher Relevanz sortiert werden sollen.
All hooks should be added to your custom SearchWP Customizations Plugin.
| <?php | |
| // Add secondary sort to SearchWP results to sort matching | |
| // relevance results by Title in ASC order. | |
| add_filter( 'searchwp\query\mods', function( $mods, $query ) { | |
| global $wpdb; | |
| $mod = new \SearchWP\Mod(); | |
| $mod->set_local_table( $wpdb->posts ); | |
| $mod->on( 'ID', [ 'column' => 'id' ] ); | |
| $mod->order_by( function( $mod ) { | |
| return $mod->get_local_table_alias() . '.post_title'; | |
| }, 'ASC', 99 ); | |
| $mods[] = $mod; | |
| return $mods; | |
| }, 30, 2 ); |
Mit diesem Code-Snippet weisen wir SearchWP an, einen sekundären Sortierungsmechanismus zu implementieren, um Ergebnisse mit gleichen Relevanzwerten nach ihrem definierten Beitragstitel in ASC-Reihenfolge zu sortieren.
Dies ist eine sekundäre Sortierklausel aufgrund der Priorität, die in der order_by()-Methodenaufruf auf 99 gesetzt ist. Wenn eine order_by()-Klausel in einem \SearchWP\Mod gesetzt wird, wird jede Klausel entsprechend ihrer Priorität in ASC-Reihenfolge ausgegeben.
Es gibt eine standardmäßige Kernsortierung für alle SearchWP-Abfragen mit der Priorität 10, um nach relevance in DESC-Reihenfolge zu sortieren.

