Come funziona la ricerca di WordPress dietro le quinte?


11

Sto usando la ricerca di WordPress per cercare una serie di tipi di post personalizzati e consentire all'utente di eseguire il drill-down in ogni singolo tipo di post.

Tuttavia sto scoprendo che WordPress non sta restituendo quelle che riterrei essere le migliori partite per prime. Ad esempio, se cerco Microsoft, le pagine che contengono il termine in modo irregolare vengono comunque restituite prima delle pagine che utilizzano regolarmente il termine.

Fondamentalmente sto cercando di trovare alcune informazioni su come WordPress classifica le pagine e determina la pertinenza e se posso influenzarlo senza dover installare alcun plug-in .

Qualsiasi aiuto molto apprezzato.


2
Questa è una domanda terribile per questo sito: vedi le sezioni cosa chiedere e cosa non chiedere . Ho fatto un paio di ricerche rapide su Google e mi sono imbattuto in questo: fai in modo che la ricerca di WordPress risucchi di meno (è del '08, quindi, quindi YMMV). Per quanto riguarda l'influenza della funzionalità senza plugin - Se sei allergico ai plugin di altri, probabilmente dovrai scriverne uno tuo. I plugin influenzano semplicemente il funzionamento di WP, ed è quello che stai cercando di fare. Giusto?
Pat J,

1
Grazie, non è che non voglio evitare di usare i plug-in di altri, piuttosto il fatto che voglio evitare la "diffusione dei plugin", cioè "Oh, avrò un plugin per questo e quello" e prima che tu lo sappia, ne hai 30 in esecuzione.
chrisd,

Capisco e simpatizzo. Gestisco un numero di plugin, ma ne ho scritti un sacco.
Pat J,

Risposte:


10

MODIFICA - L'attuale versione di WordPress supporta la pertinenza, quindi questa risposta non è più accurata.


Non esiste un concetto di rango o pertinenza, è 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}')

È possibile utilizzare il posts_searchfiltro per modificare o sostituire completamente la query di ricerca con la propria. Da /wp-includes/query.php:

// Allow plugins to contextually add/remove/modify the search section of the database query
$search = apply_filters_ref_array('posts_search', array( $search, &$this ) );

Vedi anche i filtri di query disponibili nella WP_Querypagina Codex .


4
Divertente dovresti dire che ... Nacin si è impegnato a ordinare il codice per rilevanza circa un'ora fa. In effetti, probabilmente nello stesso momento in cui stavi scrivendo la tua risposta. :) core.trac.wordpress.org/changeset/25632
Dave Ross,

Per i blog grandi / popolari, la ricerca di tutti i contenuti è piuttosto irrealistica. Qual è il modo consigliato per accelerarlo senza eliminare "OR (...)" da query.php? Devo inviare una nuova domanda o è possibile espandere la risposta?
PJ Brunet,

5

Da WordPress 3.7 (ottobre 2013) , i risultati della ricerca sono ordinati in base ai seguenti criteri (vedi ticket 7394 ):

  • Corrispondenze di frasi complete nei titoli dei post.
  • Tutti i termini di ricerca nei titoli dei post.
  • Eventuali termini di ricerca nei titoli dei post.
  • Corrispondenze di frasi complete nel contenuto dei post.

Ogni sezione e tutti i post rimanenti vengono quindi ordinati per data.

Ci sono anche nuovi filtri:

  • wp_search_stopwords, per filtrare le parole di arresto ignorate in WHERE.
  • posts_search_orderby, per filtrare ORDER BYquando si ordinano i risultati della ricerca.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.