問題描述
我正在使用 WordPress 搜索來搜索一系列自定義帖子類型,並允許用户將 drill-down 轉換為每個單獨的帖子類型。
但是我發現 WordPress 沒有返回到我以前認為是’best’ 比賽的第一個。例如,如果我搜索 Microsoft,那麼包含該術語不定期的頁面仍然在經常使用該術語的頁面之前返回。
基本上我試圖找到一些關於 WordPress 如何排列頁面並確定相關性的信息,如果我可以影響這一點,而無需安裝任何插件。
任何幫助非常感謝。
最佳解決方案
編輯 – 當前版本的 WordPress 支持相關性,所以這個答案不再準確。
沒有等級或相關性的概念,它只是一個簡單的 LIKE 查詢的標題和內容:
($wpdb->posts.post_title LIKE '{$n}{$term}{$n}') OR ($wpdb->posts.post_content LIKE '{$n}{$term}{$n}')
您可以使用 posts_search 過濾器修改或完全替換您自己的搜索查詢。來自/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 ) );
另請參閲 WP_Query Codex 頁面上的可用查詢過濾器。
次佳解決方案
由於 WordPress 3.7 (October 2013),搜索結果按照以下條件排序 (參見 ticket 7394):
-
完整的句子匹配在職位。
-
郵件標題中的所有搜索字詞。
-
郵件標題中的任何搜索字詞。
-
完整的句子匹配在帖子內容。
然後每個部分和任何剩餘的職位按日期排序。
還有新的過濾器:
-
wp_search_stopwords,用於過濾WHERE中忽略的停止字。 -
posts_search_orderby在訂購搜索結果時過濾ORDER BY。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。