¿Cómo funciona la búsqueda de WordPress internamente?
Estoy utilizando la búsqueda de WordPress para buscar en varios tipos de entradas personalizadas y permitir que el usuario profundice en cada tipo de entrada individual.
Sin embargo, estoy encontrando que WordPress no devuelve lo que consideraría las 'mejores' coincidencias primero. Por ejemplo, si busco Microsoft, las páginas que contienen el término de forma irregular todavía aparecen antes que las páginas que usan el término regularmente.
Básicamente estoy tratando de encontrar información sobre cómo WordPress clasifica las páginas y determina la relevancia y si puedo influir en esto sin tener que instalar ningún plugin.
Agradecería cualquier ayuda.

EDITAR - La versión actual de WordPress soporta relevancia, por lo que esta respuesta ya no es precisa.
No existe el concepto de rango o relevancia, es solo una simple consulta LIKE sobre el título y contenido del post:
($wpdb->posts.post_title LIKE '{$n}{$term}{$n}') OR ($wpdb->posts.post_content LIKE '{$n}{$term}{$n}')
Puedes usar el filtro posts_search
para modificar o reemplazar completamente la consulta de búsqueda con la tuya. Desde /wp-includes/query.php
:
// Permitir que los plugins añadan/remuevan/modifiquen contextualmente la sección de búsqueda de la consulta a la base de datos
$search = apply_filters_ref_array('posts_search', array( $search, &$this ) );
También revisa los filtros de consulta disponibles en la página del Codex de WP_Query
.

Es curioso que digas eso... Nacin hizo un commit con código para ordenar por relevancia hace aproximadamente una hora. De hecho, probablemente al mismo tiempo que estabas escribiendo tu respuesta. :)
http://core.trac.wordpress.org/changeset/25632

Desde WordPress 3.7 (octubre de 2013), los resultados de búsqueda se ordenan según los siguientes criterios (ver ticket 7394):
- Coincidencias exactas de la frase completa en los títulos de las entradas.
- Todos los términos de búsqueda en los títulos de las entradas.
- Cualquier término de búsqueda en los títulos de las entradas.
- Coincidencias exactas de la frase completa en el contenido de las entradas.
Cada sección y las entradas restantes se ordenan luego por fecha.
También hay nuevos filtros:
wp_search_stopwords
, para filtrar palabras vacías ignoradas enWHERE
.posts_search_orderby
, para filtrar elORDER BY
al ordenar los resultados de búsqueda.
