การค้นหา WordPress ทำงานอย่างไรเบื้องหลัง?


11

ฉันใช้การค้นหา WordPress เพื่อค้นหาประเภทโพสต์ที่กำหนดเองและอนุญาตให้ผู้ใช้เจาะลึกในโพสต์แต่ละประเภท

อย่างไรก็ตามฉันพบว่า WordPress ไม่ได้คืนสิ่งที่ฉันคิดว่าเป็นการแข่งขันที่ดีที่สุดก่อน ตัวอย่างเช่นหากฉันค้นหา Microsoft หน้าเว็บที่มีคำว่าผิดปกติจะยังคงกลับมาก่อนหน้าต่างๆที่ใช้คำนั้นเป็นประจำ

โดยทั่วไปฉันพยายามที่จะหาข้อมูลบางอย่างเกี่ยวกับวิธีการจัดอันดับหน้าเว็บ WordPress และกำหนดความเกี่ยวข้องและถ้าผมสามารถมีอิทธิพลต่อนี้ได้โดยไม่ต้องติดตั้งปลั๊กอินใด

ความช่วยเหลือใด ๆ ที่ชื่นชมมาก


2
เป็นคำถามกว้าง ๆ ที่น่ากลัวสำหรับไซต์นี้ - ดูว่าจะถามอะไร & อย่าถามหัวข้อ ฉันทำการค้นหาด้วย Google อย่างรวดเร็วและเจอสิ่งนี้: ทำให้ WordPress 'ค้นหาดูดน้อยลง (มาจาก '08 ดังนั้น YMMV) สำหรับอิทธิพลการทำงานที่ไม่มีปลั๊กอิน - หากคุณแพ้ปลั๊กอินของผู้อื่นคุณอาจต้องเขียนหนึ่งในของคุณเอง ปลั๊กอินมีผลกับการทำงานของ WP และนั่นคือสิ่งที่คุณพยายามทำ ขวา?
Pat J

1
ขอบคุณไม่ใช่ว่าฉันจะไม่หลีกเลี่ยงการใช้ปลั๊กอินของผู้อื่นยิ่งกว่าความจริงที่ว่าฉันต้องการหลีกเลี่ยง 'plugin sprawl' เช่น "โอ้ฉันจะมีปลั๊กอินสำหรับสิ่งนี้และที่" และก่อนที่คุณจะรู้ คุณมี 30 คนที่ทำงาน
chrisd

ฉันเข้าใจและเห็นอกเห็นใจ ฉันใช้งานปลั๊กอินจำนวนหนึ่ง แต่ฉันเขียนมันเป็นจำนวนมาก
Pat J

คำตอบ:


10

แก้ไข - 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


4
ตลกคุณควรพูดว่า ... Nacin ส่งรหัสเพื่อจัดเรียงตามความเกี่ยวข้องประมาณหนึ่งชั่วโมงที่แล้ว อันที่จริงอาจเป็นเวลาเดียวกันกับที่คุณเขียนคำตอบของคุณ :) core.trac.wordpress.org/changeset/25632
เดฟรอส

สำหรับบล็อกขนาดใหญ่ / เป็นที่นิยมการค้นหาเนื้อหาทั้งหมดนั้นไม่สมจริง อะไรคือวิธีที่แนะนำในการเพิ่มความเร็วโดยไม่ต้องลบ "OR (... )" จาก query.php ฉันควรส่งคำถามใหม่หรือคุณสามารถขยายคำตอบของคุณ?
PJ Brunet

5

ตั้งแต่WordPress 3.7 (ตุลาคม 2013)ผลการค้นหาจะเรียงลำดับตามเกณฑ์ต่อไปนี้ (ดูตั๋ว 7394 ):

  • จับคู่ประโยคแบบเต็มในชื่อโพสต์
  • คำค้นหาทั้งหมดในชื่อโพสต์
  • ข้อความค้นหาใด ๆ ในชื่อโพสต์
  • จับคู่ประโยคเต็มในเนื้อหาโพสต์

แต่ละส่วนและโพสต์ที่เหลือจะถูกจัดเรียงตามวันที่

นอกจากนี้ยังมีตัวกรองใหม่:

  • wp_search_stopwordsเพื่อกรองคำที่ไม่ใช้WHEREแล้ว
  • posts_search_orderbyเพื่อกรองORDER BYเมื่อสั่งผลการค้นหา
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.