Come funziona la ricerca di WordPress dietro le quinte?
Sto utilizzando la ricerca di WordPress per cercare tra diversi custom post type e permettere all'utente di esplorare ciascun tipo di contenuto individualmente.
Tuttavia sto notando che WordPress non restituisce sempre quelli che considererei i "migliori" risultati per primi. Ad esempio, se cerco "Microsoft", le pagine che contengono il termine sporadicamente vengono comunque mostrate prima di pagine che usano regolarmente il termine.
Fondamentalmente sto cercando informazioni su come WordPress classifica le pagine e determina la rilevanza, e se posso influenzare questo comportamento senza dover installare alcun plugin.
Ogni aiuto è molto apprezzato.

MODIFICA - La versione attuale di WordPress supporta la rilevanza, quindi questa risposta non è più accurata.
Non esiste un concetto di ranking o rilevanza, è solo una semplice query LIKE sul titolo e sul contenuto del post:
($wpdb->posts.post_title LIKE '{$n}{$term}{$n}') OR ($wpdb->posts.post_content LIKE '{$n}{$term}{$n}')
Puoi utilizzare il filtro posts_search
per modificare o completamente sostituire la query di ricerca con una tua. Da /wp-includes/query.php
:
// Consente ai plugin di aggiungere/rimuovere/modificare contestualmente la sezione di ricerca della query del database
$search = apply_filters_ref_array('posts_search', array( $search, &$this ) );
Vedi anche i filtri di query disponibili nella pagina Codex di WP_Query
.

Che coincidenza che tu lo dica… Nacin ha appena committato il codice per ordinare per rilevanza circa un'ora fa. In effetti, probabilmente nello stesso momento in cui stavi scrivendo la tua risposta. :)
http://core.trac.wordpress.org/changeset/25632

Per blog grandi/popolari, cercare in tutto il contenuto è piuttosto irrealistico. Qual è il modo consigliato per velocizzare questa operazione senza dover semplicemente eliminare "OR (...)" da query.php? Dovrei aprire una nuova domanda o puoi espandere la tua risposta?

Da WordPress 3.7 (ottobre 2013), i risultati di ricerca sono ordinati secondo i seguenti criteri (vedi ticket 7394):
- Corrispondenze esatte della frase nei titoli dei post.
- Tutti i termini di ricerca nei titoli dei post.
- Qualsiasi termine di ricerca nei titoli dei post.
- Corrispondenze esatte della frase nel contenuto dei post.
Ogni sezione e i post rimanenti vengono poi ordinati per data.
Sono stati introdotti anche nuovi filtri:
wp_search_stopwords
, per filtrare le stop word ignorate nella clausolaWHERE
.posts_search_orderby
, per filtrare la clausolaORDER BY
durante l'ordinamento dei risultati di ricerca.
