Tip
Jika Anda memiliki pertanyaan tentang pengoperasian dan implementasi proyek ini, atau jika Anda memiliki saran pengoptimalan yang lebih baik untuk proyek ini, Anda dapat menghubungi saya secara langsung atau meninggalkan masalah di repositori.
Proyek ini merupakan implementasi mesin pencari berdasarkan perpustakaan Boost, yang bertujuan untuk menyediakan sistem pencarian yang efisien dan akurat khusus untuk pencarian dokumen Boost. Dengan menguraikan proses pembuatan mesin pencari, mulai dari pemrosesan awal data hingga pembuatan indeks, hingga pemrosesan kueri pencarian dan presentasi hasil, proyek ini menunjukkan cara membangun sistem mesin pencari yang lengkap. Tumpukan teknologi mencakup C++, Boost Library, Html, CSS dan JavaScript, mewujudkan konstruksi indeks back-end dan interaksi pengguna front-end. Fungsi dasar proyek ini komprehensif, dan fitur-fitur canggih seperti statistik frekuensi kata, indeks yang diperbarui secara dinamis, dan pengurutan prioritas hasil pencarian telah ditambahkan, yang secara signifikan meningkatkan efisiensi dan akurasi pencarian. Hal ini membuat mesin pencari sangat cocok bagi pengembang untuk dengan cepat menemukan dokumen teknis yang mereka perlukan saat menggunakan perpustakaan Boost, sehingga sangat meningkatkan efisiensi pengembangan dan aksesibilitas dokumen.
Pencarian dokumen dalam jumlah besar dan isi yang terkandung di dalam dokumen tersebut jelas merupakan perilaku yang sangat menyita waktu dan tenaga. Jika Anda langsung melintasi dan mengaksesnya satu per satu, pada dasarnya layanan tidak akan merespons dalam waktu lama. Oleh karena itu, diperlukan cara yang lebih cepat dan nyaman untuk merencanakan dan mengelola data dalam jumlah besar untuk mencapai pencarian yang cepat. Membangun indeks adalah inti dari penyelesaian masalah ini.
Yang disebut indeks adalah melampirkan label pada dokumen dan mencari dengan cepat berdasarkan label tersebut. Mengelola label jauh lebih tidak menimbulkan stres dibandingkan mengelola dokumen, yang merupakan alasan penting untuk membangun indeks.
Pustaka Boost adalah istilah umum untuk beberapa pustaka C++ yang menyediakan ekstensi ke pustaka standar bahasa C++. Ini dikembangkan dan dikelola oleh komunitas Boost. Pustaka Boost dapat bekerja sempurna dengan pustaka standar C++ dan menyediakan fungsi tambahan untuknya. Situs web boost menyediakan sejumlah besar dokumen. Penerapan mesin pencari dapat membantu kita menemukan dokumen yang kita butuhkan secara akurat dan cepat dalam jumlah dokumen yang banyak.
Ujung belakang: C/C+, C++11, STL, Boost, Jsoncpp, cppjieba, cpp-httplib
Bagian depan: html5, css, js, jQuery, Ajax
Memengaruhi:
Efek latar belakang:
Karena proyek ini tidak mengimplementasikan layanan perayap, metode pengunduhan data ke komputer lokal diterapkan di sini. File atau direktori HTML data dapat ditempatkan di direktori berikut.
Langkah-langkah spesifik dapat ditemukan di: word.md-chapter
boost-search-engine/search-engine/data/input
[!CATATAN] Lingkungan yang saya gunakan adalah:
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
Instal CMake:
Instal Visual Studio:
Instal perpustakaan Boost:
C:Librariesboost_1_75_0
cd C:Librariesboost_1_75_0
.bootstrap.bat
.b2.exe
BOOST_ROOT
ke direktori tempat Boost diinstal.Instal jsoncpp:
vcpkg install jsoncpp
Konfigurasikan proyek CMake:
BOOST_ROOT
).Instal Homebrew:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Instal CMake dan pustaka dependen:
brew install cmake boost jsoncpp
Konfigurasikan proyek CMake:
mkdir build && cd build
cmake ..
make
Linux (Ubuntu, 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
Konfigurasikan proyek CMake:
mkdir build && cd build
cmake ..
make
Anda juga dapat menggunakan makefile
untuk mengkompilasi secara langsung:
make
[!TIP]
- Pastikan jalur disetel dengan benar di semua platform, terutama di Windows, di mana Anda mungkin perlu menyetel jalur ke beberapa perpustakaan secara manual.
- Untuk distribusi Linux yang berbeda, perintah instalasi dan paket yang tersedia mungkin sedikit berbeda, jadi sesuaikanlah.
- Saat membangun di Windows dengan Visual Studio, pastikan untuk memilih arsitektur yang benar (x86 atau x64) agar sesuai dengan versi perpustakaan.
Tautan Resmi:
https://github.com/yanyiwu/cppjieba
Tautkan direktori cppjieba
ke dalam direktori proyek boost-search-engine/search-engine/include
.
Masuk ke direktori cppjieba
Tautkan komponen perpustakaan kamus dict
dan komponen limonp
ke cppjieba
.
Parsing datanya.
./parser
Seperti terlihat pada gambar, operasi berhasil. Jika operasi gagal, Anda dapat memeriksa pesan kesalahan. Mungkin konfigurasi jalurnya salah. Anda dapat mengonfigurasi sendiri jalurnya di dalam kode.
Mulai layanan:
Seperti yang ditunjukkan pada gambar, startup berhasil.
Tentu saja, metode lain juga dapat digunakan untuk menyebarkan ke layanan latar belakang, seperti:
nohup ./server > log/log.txt 2>&1 &
Anda juga dapat menggunakan beberapa metode lain, seperti tmux, dll.
Gunakan browser untuk mengakses nomor port 8081 IP. Nomor port diatur dalam ./src/server.cc
.
Bagian log dapat lebih ditingkatkan.