ฉันยุ่งอยู่กับการศึกษาการเพิ่มประสิทธิภาพเว็บไซต์เมื่อเร็ว ๆ นี้ และจู่ ๆ ฉันก็สนใจและศึกษาหลักการของ SE สั้น ๆ หลังจากอ่านบทความนี้แล้ว พวกเขาจะได้รับประโยชน์อย่างมากจาก SEO เท่านั้น อันดับที่ดีขึ้น
ปัญหาทางเทคนิคที่เสิร์ชเอ็นจิ้นจำเป็นต้องแก้ไขโดยทั่วไปจะแบ่งออกเป็นโปรแกรมสไปเดอร์ + การจำแนกและการจัดทำดัชนี + คำศัพท์ + ปัจจัยการเรียงลำดับอัลกอริธึม + การจัดทำดัชนีและการเพิ่มประสิทธิภาพฐานข้อมูล + โครงสร้างฐานข้อมูล
1. แมงมุม. ในปัจจุบันดูเหมือนว่าสไปเดอร์สามารถนำไปใช้ใน C หรือ PHP ได้ สไปเดอร์ของ Baidu ส่วนใหญ่ทำจาก C นอกจากนี้ C ยังสามารถรองรับอินเทอร์เฟซการเชื่อมต่อฐานข้อมูลได้หลายแบบ และประสิทธิภาพการทำงานของ C นั้นสูงกว่า PHP และ C ยังสามารถควบคุมเลเยอร์ด้านล่างได้ดีขึ้นอีกด้วย แม้ว่า C จะดีมาก แต่ฉันก็ยังต้องการใช้ PHP ต้องประหยัดเวลามากกว่านี้ และเราไม่สามารถเรียนรู้ภาษาซีได้อีกต่อไป หากคุณต้องการใช้ C ในอนาคต หากคุณต้องการประสิทธิภาพสูง ให้ใช้ C อีกครั้ง ฐานข้อมูลยังคงไม่เปลี่ยนแปลง และสามารถเชื่อมต่อกับ MYSQL กับ C ได้ PHP มีข้อดีและข้อเสีย ไม่ควรเป็นปัญหาใหญ่หากคุณเป็นแมงมุม ปัญหาใหญ่ที่สุดคือมันอาจจะช้ามาก เมื่อรวบรวมข้อมูลหน้าเว็บ ปัญหาที่อาจเกิดขึ้นคือลำดับการรวบรวมข้อมูล วิธีบันทึกหากการรวบรวมข้อมูลไม่สำเร็จหรือหมดเวลา และเมื่อใดที่ต้องอัปเดตการรวบรวมข้อมูลในครั้งถัดไป ฐานข้อมูลเครื่องมือค้นหาเป็นฐานข้อมูลใหม่ในตอนแรก โดยไม่มี URL ใดๆ และจำเป็นต้องเพิ่ม URL จำนวนมาก คุณสามารถใช้คำสั่ง for loop ที่นี่เพื่อวนซ้ำโดยอัตโนมัติตามตัวอักษรภาษาอังกฤษ แน่นอนว่าเว็บไซต์นี้ไม่เพียงแต่เป็นภาษาอังกฤษเท่านั้น แต่ยังรวมถึงตัวเลขด้วยซึ่งสามารถป้อนได้ด้วยตนเองเท่านั้น หากคุณยังคงคว้ามันมาแบบวนซ้ำคาดว่าหลายอันจะล้มเหลว โค้ดที่บันทึกต้องได้รับการวิเคราะห์เพื่อดูว่าประเภทการเข้ารหัสเป็น utf-8 หรือ gb2312 เครื่องมือค้นหาของฉันต้องการจับภาพภาษาจีนตัวย่อเท่านั้น หากการดึงข้อมูลหมดเวลา มันจะถูกบันทึกและจะถูกดึงอีกครั้งในอีกประมาณ 10 วันต่อมา หากหมดเวลาติดต่อกัน 3 ครั้ง มันจะถูกนำออกจากฐานข้อมูล
2. การสร้างดัชนีเป็นปัญหาที่ยากมาก Baidu และ Google สามารถใช้ฟาร์มเซิร์ฟเวอร์ของตนเองเพื่อสร้างเซิร์ฟเวอร์แบบกระจาย ฉันไม่มีเซิร์ฟเวอร์มากมายขนาดนั้น ดังนั้นฉันจึงอยากลองวิธีอื่น สร้างเพจแบบคงที่ ฉันไม่รู้มาก่อนว่าจะใช้เวลาประมาณ 0.2 วินาทีในการป้อนคำที่ค่อนข้างแปลกใน Baidu และ Google ในขณะที่คำทั่วไปใช้เวลาเพียง 0.1 วินาที นอกจากนี้ เวลาในการสืบค้นที่ต้องใช้ในการป้อนคำซ้ำ ๆ ในครั้งที่สองยังน้อยกว่ามาก นี่อาจเป็นผลกระทบของดัชนี ถ้าดัชนีถูกวางไว้ในหน่วยความจำ ความเร็วในการอ่านจะโอเคมาก ฉันมีเซิร์ฟเวอร์เพียงเซิร์ฟเวอร์เดียว และแม้ว่าฉันจะใส่ดัชนีคำค้นหาทั่วไปเพียง 50,000 คำลงไป มันก็คงจะเหนื่อยสักหน่อย หน้าต้องมีอย่างน้อย 20K และ 50,000 หน้าคือ 20K*50=1G นี่เป็นเพียงหน้าแรกของ 50,000 คำ หากผู้ใช้ต้องการเปิดหน้าเพื่อสอบถาม หน่วยความจำจะไม่เพียงพออย่างแน่นอน หากใส่เฉพาะหน้าแรกลงในหน่วยความจำและผู้ใช้เปลี่ยนหน้าเพื่อค้นหา ความเร็วจะไม่ได้รับการปรับปรุง ผมจะนิ่งเต็มที่ จำลองการค้นหาจำนวน 50,000 คำ จากนั้นสร้างเพจแบบคงที่ หน้าแรกของคำทั้งหมดจะอยู่ในหน่วยความจำ และหน้าถัดไปจะอยู่ในฮาร์ดดิสก์ หากสามารถใส่เพจลงในหน่วยความจำได้ ปัญหานี้จะหมดไป
3. คำศัพท์ มีตัวอักษรจีนนับพันตัว และมีตัวอักษรจีนที่ใช้กันทั่วไปอย่างน้อย 3,000 ตัว คาดว่ามีคำที่ใช้กันทั่วไปประมาณ 20,000 คำที่ประกอบด้วย จะเพิ่มอรรถาภิธานนี้ได้อย่างไร ควรจัดเก็บในรูปแบบใด ไฟล์ CSV ฐานข้อมูล หรือไฟล์ข้อความ ก่อนหน้านี้ฉันคิดที่จะค้นหาไฟล์อรรถาภิธานของ Kingsoft PowerWord แล้วลองคัดลอกโดยตรง
4. อัลกอริธึมทั้งหมดที่ส่งผลต่อการเรียงลำดับควรวางไว้ในตาราง จากนั้นมีอัลกอริธึมแบบคงที่ซึ่งเป็นปัจจัยของเว็บไซต์เอง และอัลกอริธึมแบบแปรผันซึ่งเป็นปัจจัยที่เปลี่ยนแปลงเนื่องจากการป้อนคำโดยผู้ใช้หรือเนื่องจากเวลา ฤดูกาล ฯลฯ อัลกอริธึมคงที่จะถูกวางไว้ในตารางและคะแนนรวมจะถูกคำนวณสำหรับแต่ละเว็บไซต์ อัลกอริธึมการเปลี่ยนแปลงบางส่วนได้ถูกสร้างขึ้นก่อนหน้านี้ และส่วนหนึ่งจะถูกคำนวณหลังจากที่ผู้ใช้ป้อนข้อมูล
5. ขณะนี้ยังไม่มีวิธีแก้ปัญหาที่ดีสำหรับการสร้างดัชนีฐานข้อมูล จะต้องไม่มีดัชนีนิพจน์มากเกินไป เนื่องจากมากเกินไปจะส่งผลต่อความเร็ว
6. โครงสร้างฐานข้อมูล นี่เป็นสิ่งสำคัญ คาดว่าโครงสร้างฐานข้อมูลจะต้องได้รับการสรุปก่อนที่อินเทอร์เฟซส่วนหน้าของเว็บไซต์จะออกมา นอกจากนี้ยังจำเป็นต้องออกจากอินเทอร์เฟซสำหรับการอัพเกรดในอนาคต เช่น การเพิ่มปัจจัยอัลกอริทึม หรือการเปลี่ยนแปลงฟิลด์เพื่อเพิ่มประสิทธิภาพคำสั่งการสืบค้น เป็นต้น โครงสร้างเบื้องต้นเป็นแบบนี้ครับ 1-3 ตารางเก็บข้อมูลเว็บไซต์ ฟิลด์แรกคือคีย์หลักที่เพิ่มขึ้นอัตโนมัติ ฟิลด์ที่สองคือที่อยู่หน้าแรกของเว็บไซต์ และตามลำดับคือเวลาในการจดทะเบียนชื่อโดเมนของเว็บไซต์ เวลาในการรวบรวม เวลาสแน็ปช็อตล่าสุด จำนวนหน้าทั้งหมดรวม จำนวนไบต์บน หน้าแรก, การจำแนกชื่อโดเมน (com/ cn/org/net/gov/edu), จำนวนลิงก์ย้อนกลับทั้งหมด, การจัดหมวดหมู่เว็บไซต์ (อาจเป็น 1-10, พอร์ทัลสามารถขยายได้ถึง 30) เป็นต้น
บทความนี้ทำซ้ำจาก: www.jianfeiyiqi.com โปรดระบุแหล่งที่มาพร้อมลิงก์