WordPress araması perde arkasında nasıl çalışır?


11

WordPress aramasını bir dizi özel yazı türünü aramak ve kullanıcının her bir yazı türüne detaya inmesini sağlamak için kullanıyorum.

Ancak WordPress'in önce 'en iyi' maçlar olarak gördüğüm şeyi döndürmediğini görüyorum. Örneğin, Microsoft'u ararsam, terimi düzensiz olarak içeren sayfalar, terimi düzenli olarak kullanan sayfalardan önce yine de döndürülür.

Temelde WordPress'in sayfaları nasıl sıraladığı ve alaka düzeyini nasıl belirlediği hakkında bazı bilgiler bulmaya çalışıyorum ve herhangi bir eklenti yüklemek zorunda kalmadan bunu etkileyebiliyorum .

Herhangi bir yardım çok takdir etmek.


2
Bu site için çok geniş bir soru - ne soracağınızı ve ne sormayacağınızı görün . Birkaç hızlı Google araması yaptım ve bununla karşılaştım: WordPress'i 'Search Suck Less' yapın ('08'den geliyor, bu yüzden YMMV). Eklentisiz işlevselliği etkileme gelince - Başkalarının eklentilerine alerjiniz varsa, muhtemelen kendinizinkini yazmanız gerekecektir. Eklentiler sadece WP'nin işlevini etkiler ve yapmaya çalıştığınız da budur. Sağ?
Pat J

1
Teşekkürler, başkalarının eklentilerini kullanmaktan kaçınmak istemiyorum, daha çok 'eklenti yayılımından' kaçınmak istiyorum, yani "Oh, bunun için bir eklentim olacak" ve bunu bilmeden önce, 30 tanesi koşuyor.
chrisd

Anlıyorum ve sempati duyuyorum. Birkaç eklenti çalıştırdım, ancak bir sürü yazdım.
Pat J

Yanıtlar:


10

EDIT - WordPress'in geçerli sürümü alaka düzeyini destekler, bu nedenle bu yanıt artık doğru değildir.


Hiçbir sıralama veya alaka düzeyi kavramı yoktur, bu yalnızca gönderi başlığı ve içeriğinde basit bir LIKE sorgusudur:

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

posts_searchArama sorgusunu kendinizle değiştirmek veya tamamen değiştirmek için filtreyi kullanabilirsiniz . Gönderen /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 ) );

Kodeks sayfasındaki kullanılabilir sorgu filtrelerineWP_Query de bakın .


4
Komik demelisiniz ki ... Nacin yaklaşık bir saat önce alaka düzeyine göre sıralamak için kod verdi. Aslında, muhtemelen cevabınızı yazıyordunuz. :) core.trac.wordpress.org/changeset/25632
Dave Ross

Büyük / popüler bloglar için, tüm içeriği aramak oldukça gerçekçi değildir. Query.php dosyasından "VEYA (...)" silmeden bunu hızlandırmanın önerilen yolu nedir? Yeni bir soru göndermeli miyim yoksa cevabınızı genişletebilir misiniz?
PJ Brunet

5

WordPress 3.7'den (Ekim 2013) beri , arama sonuçları aşağıdaki kriterlere göre sıralanmaktadır (bkz. Bilet 7394 ):

  • Yazı başlıklarında tam cümle eşleşmeleri.
  • Yazı başlıklarındaki tüm arama terimleri.
  • Yazı başlıklarında herhangi bir arama terimi.
  • Gönderi içeriğinde tam cümle eşleşmeleri.

Her bölüm ve kalan gönderiler tarihe göre sıralanır.

Yeni filtreler de var:

  • wp_search_stopwords, göz ardı edilen kelimeleri filtrelemek için WHERE.
  • posts_search_orderby, ORDER BYarama sonuçlarını sipariş ederken filtrelemek için .
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.