เคล็ดลับ
หากคุณมีคำถามใดๆ เกี่ยวกับการดำเนินการและการดำเนินโครงการนี้ หรือหากคุณมีคำแนะนำในการเพิ่มประสิทธิภาพที่ดีกว่าสำหรับโครงการนี้ คุณสามารถติดต่อฉันได้โดยตรงหรือฝากปัญหาไว้ในพื้นที่เก็บข้อมูล
โปรเจ็กต์นี้เป็นการนำเครื่องมือค้นหาไปใช้โดยใช้ไลบรารี Boost โดยมีเป้าหมายเพื่อมอบระบบการค้นหาที่มีประสิทธิภาพและแม่นยำโดยเฉพาะสำหรับการค้นหาเอกสาร Boost โดยการอธิบายอย่างละเอียดเกี่ยวกับกระบวนการสร้างเครื่องมือค้นหา ตั้งแต่การประมวลผลข้อมูลล่วงหน้าไปจนถึงการสร้างดัชนี ไปจนถึงการประมวลผลคำค้นหาและการนำเสนอผลลัพธ์ โปรเจ็กต์นี้จะแสดงวิธีสร้างระบบเครื่องมือค้นหาที่สมบูรณ์ เทคโนโลยีสแต็กครอบคลุม C++, Boost Library, Html, CSS และ JavaScript เพื่อให้ทราบถึงการสร้างดัชนีส่วนหลังและการโต้ตอบกับผู้ใช้ส่วนหน้า ฟังก์ชั่นพื้นฐานของโครงการมีความครอบคลุม และมีการเพิ่มคุณสมบัติขั้นสูง เช่น สถิติความถี่ของคำ ดัชนีที่อัปเดตแบบไดนามิก และการเรียงลำดับลำดับความสำคัญของผลการค้นหา ซึ่งช่วยปรับปรุงประสิทธิภาพและความแม่นยำในการค้นหาอย่างมาก สิ่งนี้ทำให้เสิร์ชเอ็นจิ้นเหมาะสมอย่างยิ่งสำหรับนักพัฒนาในการค้นหาเอกสารทางเทคนิคที่ต้องการได้อย่างรวดเร็วเมื่อใช้ไลบรารี Boost ซึ่งปรับปรุงประสิทธิภาพการพัฒนาและการเข้าถึงเอกสารอย่างมาก
การค้นหาเอกสารจำนวนมากและเนื้อหาที่มีอยู่ในเอกสารถือเป็นพฤติกรรมที่ใช้เวลานานและต้องใช้แรงงานมาก หากคุณสำรวจและเข้าถึงโดยตรงทีละรายการ โดยทั่วไปบริการจะไม่ตอบสนองเป็นเวลานาน ด้วยเหตุนี้ จึงจำเป็นต้องมีวิธีที่เร็วและสะดวกยิ่งขึ้นในการวางแผนและจัดการข้อมูลจำนวนมากเพื่อให้สามารถค้นหาได้รวดเร็ว การสร้างดัชนีถือเป็นหัวใจสำคัญของการแก้ปัญหานี้
ดัชนีที่เรียกว่าคือการติดป้ายกำกับให้กับเอกสารและค้นหาอย่างรวดเร็วตามป้ายกำกับ การจัดการฉลากมีความเครียดน้อยกว่าการจัดการเอกสารมาก ซึ่งเป็นเหตุผลสำคัญในการสร้างดัชนี
Boost Library เป็นคำทั่วไปสำหรับไลบรารี C++ บางตัวที่ให้ส่วนขยายสำหรับไลบรารีมาตรฐานภาษา C++ ได้รับการพัฒนาและดูแลโดยชุมชน Boost Boost Library สามารถทำงานได้อย่างสมบูรณ์แบบกับไลบรารีมาตรฐาน C++ และมีฟังก์ชันเพิ่มเติมสำหรับไลบรารีดังกล่าว เว็บไซต์บูสต์มีเอกสารจำนวนมาก การใช้เครื่องมือค้นหาสามารถช่วยให้เราค้นหาเอกสารที่เราต้องการได้อย่างถูกต้องและรวดเร็วในเอกสารจำนวนมาก
แบ็กเอนด์: C/C+, C++11, STL, Boost, Jsoncpp, cppjieba, cpp-httplib
ส่วนหน้า: html5, css, js, jQuery, Ajax
ผล:
เอฟเฟกต์แบ็กเอนด์:
เนื่องจากโปรเจ็กต์ไม่ได้ใช้บริการซอฟต์แวร์รวบรวมข้อมูล จึงใช้วิธีการดาวน์โหลดข้อมูลไปยังคอมพิวเตอร์ในระบบที่นี่ ไฟล์ข้อมูล HTML หรือไดเร็กทอรีสามารถวางในไดเร็กทอรีต่อไปนี้
สามารถดูขั้นตอนเฉพาะได้ที่: word.md-chapter
boost-search-engine/search-engine/data/input
[!NOTE] สภาพแวดล้อมที่ฉันใช้คือ:
Linux ubuntu-linux-22-04-desktop 5.15.0-113-generic #123-Ubuntu SMP Mon Jun 10 08:16:46 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux
ติดตั้ง CMake:
ติดตั้ง Visual Studio:
ติดตั้งไลบรารี Boost:
C:Librariesboost_1_75_0
cd C:Librariesboost_1_75_0
.bootstrap.bat
.b2.exe
BOOST_ROOT
เป็นไดเร็กทอรีที่ติดตั้ง Boostติดตั้ง jsoncpp:
vcpkg install jsoncpp
กำหนดค่าโครงการ CMake:
BOOST_ROOT
)ติดตั้งโฮมบรูว์:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
ติดตั้ง CMake และไลบรารี่ที่ขึ้นต่อกัน:
brew install cmake boost jsoncpp
กำหนดค่าโครงการ CMake:
mkdir build && cd build
cmake ..
make
ลินุกซ์ (อูบุนตู, CentOS)
sudo apt-get update
sudo apt-get install cmake g++ libboost-all-dev libjsoncpp-dev
sudo yum install cmake gcc-c++ boost-devel jsoncpp-devel
กำหนดค่าโครงการ CMake:
mkdir build && cd build
cmake ..
make
คุณยังสามารถใช้ makefile
เพื่อคอมไพล์ได้โดยตรง:
make
[!เคล็ดลับ]
- ตรวจสอบให้แน่ใจว่าได้ตั้งค่าเส้นทางอย่างถูกต้องบนทุกแพลตฟอร์ม โดยเฉพาะบน Windows ซึ่งคุณอาจต้องตั้งค่าเส้นทางไปยังไลบรารีบางแห่งด้วยตนเอง
- สำหรับ Linux รุ่นต่างๆ คำสั่งการติดตั้งและแพ็คเกจที่ใช้ได้อาจแตกต่างกันเล็กน้อย ดังนั้นควรปรับเปลี่ยนให้เหมาะสม
- เมื่อสร้างบน Windows ด้วย Visual Studio ตรวจสอบให้แน่ใจว่าได้เลือกสถาปัตยกรรมที่ถูกต้อง (x86 หรือ x64) เพื่อให้ตรงกับเวอร์ชันของไลบรารี
ลิงค์อย่างเป็นทางการ:
https://github.com/yanyiwu/cppjieba
ลิงก์ไดเร็กทอรี cppjieba
เข้ากับไดเร็กทอรี boost-search-engine/search-engine/include
ของโปรเจ็กต์
ป้อนไดเร็กทอรี cppjieba
เชื่อมโยงส่วนประกอบไลบรารีพจนานุกรม dict
และส่วนประกอบ limonp
เข้ากับ cppjieba
แยกวิเคราะห์ข้อมูล
./parser
ดังแสดงในรูป การดำเนินการสำเร็จ หากการดำเนินการล้มเหลว คุณสามารถตรวจสอบข้อความแสดงข้อผิดพลาดได้ อาจเป็นเพราะการกำหนดค่าเส้นทางไม่ถูกต้อง คุณสามารถกำหนดค่าเส้นทางได้ด้วยตัวเองในโค้ด
เริ่มบริการ:
ดังแสดงในรูป สตาร์ทอัพได้สำเร็จ
แน่นอนว่า วิธีการอื่นๆ ยังสามารถใช้เพื่อปรับใช้กับบริการเบื้องหลังได้ เช่น:
nohup ./server > log/log.txt 2>&1 &
คุณยังสามารถใช้วิธีการอื่นได้ เช่น tmux เป็นต้น
ใช้เบราว์เซอร์เพื่อเข้าถึงหมายเลขพอร์ต 8081 ของ IP หมายเลขพอร์ตถูกตั้งค่าใน . ./src/server.cc
ส่วนบันทึกสามารถปรับปรุงเพิ่มเติมได้