¿Cómo funciona la búsqueda de WordPress detrás de escena?

11

Estoy usando la búsqueda de WordPress para buscar un rango de tipos de publicaciones personalizadas y permitir al usuario profundizar en cada tipo de publicación individual.

Sin embargo, estoy descubriendo que WordPress no está devolviendo lo que considero que son las "mejores" coincidencias primero. Por ejemplo, si busco Microsoft, las páginas que contienen el término de forma irregular todavía se devuelven 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 complemento .

Cualquier ayuda muy apreciada.

chrisd
fuente
2
Esa es una pregunta muy amplia para este sitio: vea las secciones qué preguntar y qué no preguntar . Hice un par de búsquedas rápidas en Google y me encontré con esto: Hacer que WordPress 'Search Suck Less (es de '08, sin embargo, así que YMMV). En cuanto a influir en la funcionalidad sin complementos: si es alérgico a los complementos de otros, probablemente tendrá que escribir uno propio. Los complementos simplemente afectan el funcionamiento de WP, y eso es lo que estás tratando de hacer. ¿Derecho?
Pat J
1
Gracias, no es que no quiera evitar el uso de los complementos de otros, más el hecho de que quiero evitar la "expansión de complementos", es decir, "Oh, tendré un complemento para esto y aquello" y antes de que te des cuenta, Tienes 30 de ellos corriendo.
Chris
Entiendo y simpatizo. Ejecuto varios complementos, pero he escrito un montón de ellos.
Pat J

Respuestas:

10

EDITAR : la versión actual de WordPress admite relevancia, por lo que esta respuesta ya no es precisa.


No existe un concepto de rango o relevancia, es solo una simple consulta ME GUSTA en el título y el contenido de la publicación:

($wpdb->posts.post_title LIKE '{$n}{$term}{$n}') OR ($wpdb->posts.post_content LIKE '{$n}{$term}{$n}')

Puede usar el posts_searchfiltro para modificar o reemplazar completamente la consulta de búsqueda por la suya. De /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 ) );

Consulte también los filtros de consulta disponibles en la WP_Querypágina del Codex .

Milo
fuente
44
Es curioso que digas eso ... Nacin cometió un código para ordenar por relevancia hace una hora. De hecho, probablemente al mismo tiempo que estaba escribiendo su respuesta. :) core.trac.wordpress.org/changeset/25632
Dave Ross el
Para blogs grandes / populares, buscar todo el contenido es poco realista. ¿Cuál es la forma recomendada para acelerar esto sin simplemente eliminar el "OR (...)" de query.php? ¿Debo enviar una nueva pregunta o puede ampliar su respuesta?
PJ Brunet
5

Desde WordPress 3.7 (octubre de 2013) , los resultados de búsqueda se ordenan según los siguientes criterios (ver ticket 7394 ):

  • Oraciones completas coinciden en los títulos de las publicaciones.
  • Todos los términos de búsqueda en los títulos de las publicaciones.
  • Cualquier término de búsqueda en los títulos de las publicaciones.
  • La oración completa coincide con el contenido de la publicación.

Cada sección y las publicaciones restantes se ordenan por fecha.

También hay nuevos filtros:

  • wp_search_stopwords, para filtrar las palabras de parada ignoradas en WHERE.
  • posts_search_orderby, para filtrar ORDER BYal ordenar resultados de búsqueda.
fuxia
fuente