Bagaimana cara kerja pencarian WordPress di belakang layar?

11

Saya menggunakan pencarian WordPress untuk mencari berbagai jenis posting kustom dan memungkinkan pengguna untuk menelusuri setiap jenis posting individu.

Namun saya menemukan bahwa WordPress tidak mengembalikan apa yang saya anggap sebagai pertandingan 'terbaik' terlebih dahulu. Misalnya, jika saya mencari Microsoft, halaman yang berisi istilah tidak teratur masih dikembalikan sebelum halaman yang secara teratur menggunakan istilah tersebut.

Pada dasarnya saya mencoba mencari beberapa informasi tentang bagaimana WordPress memberi peringkat pada halaman dan menentukan relevansi dan jika saya dapat memengaruhi ini tanpa harus menginstal plugin apa pun .

Setiap bantuan sangat dihargai.

chrisd
sumber
2
Itu pertanyaan luas yang mengerikan untuk situs ini - lihat bagian apa yang harus ditanyakan & bagian yang tidak boleh ditanyakan . Saya melakukan beberapa pencarian cepat di Google, dan menemukan ini: Make WordPress 'Search Suck Less (ini dari '08, jadi, YMMV). Adapun untuk mempengaruhi fungsi tanpa plugin - Jika Anda alergi terhadap plugin orang lain, Anda mungkin harus menulis salah satu dari Anda sendiri. Plugin hanya memengaruhi fungsi WP, dan itulah yang Anda coba lakukan. Baik?
Pat J
1
Terima kasih, bukan karena saya tidak ingin menghindari menggunakan plugin orang lain, lebih tepatnya fakta bahwa saya ingin menghindari 'plugin sprawl', yaitu "Oh, saya akan memiliki plugin untuk ini dan itu" dan sebelum Anda menyadarinya, Anda memiliki 30 dari mereka yang menjalankan.
chrisd
Saya mengerti dan bersimpati. Saya menjalankan sejumlah plugin, tetapi saya telah menulis banyak di antaranya.
Pat J

Jawaban:

10

EDIT - Versi WordPress saat ini mendukung relevansi, jadi jawaban ini tidak lagi akurat.


Tidak ada konsep peringkat atau relevansi, itu hanya pertanyaan SEPERTI sederhana pada judul posting dan konten:

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

Anda dapat menggunakan posts_searchfilter untuk memodifikasi atau sepenuhnya mengganti permintaan pencarian dengan Anda sendiri. Dari /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 ) );

Juga lihat filter kueri yang tersedia di WP_Queryhalaman Codex .

Milo
sumber
4
Lucu Anda harus mengatakan itu ... Nacin melakukan kode untuk mengurutkan berdasarkan relevansi sekitar satu jam yang lalu. Bahkan, mungkin saat yang sama saat Anda menulis jawaban Anda. :) core.trac.wordpress.org/changeset/25632
Dave Ross
Untuk blog besar / populer, mencari semua konten sangat tidak realistis. Apa cara yang disarankan untuk mempercepat ini tanpa hanya menghapus "ATAU (...)" dari query.php? Haruskah saya mengirimkan pertanyaan baru atau dapatkah Anda memperluas jawaban Anda?
PJ Brunet
5

Sejak WordPress 3.7 (Oktober 2013) , hasil pencarian diurutkan berdasarkan kriteria berikut (lihat tiket 7394 ):

  • Kalimat lengkap cocok dengan judul posting.
  • Semua istilah pencarian dalam judul posting.
  • Setiap istilah pencarian dalam judul posting.
  • Kalimat lengkap cocok dengan konten tulisan.

Setiap bagian dan tulisan yang tersisa kemudian diurutkan berdasarkan tanggal.

Ada juga filter baru:

  • wp_search_stopwords, untuk memfilter kata berhenti diabaikan WHERE.
  • posts_search_orderby, untuk memfilter ORDER BYsaat memesan hasil pencarian.
fuxia
sumber