問題描述

我正在使用 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。