نصيحة
إذا كانت لديك أي أسئلة حول تشغيل هذا المشروع وتنفيذه، أو إذا كانت لديك اقتراحات تحسين أفضل لهذا المشروع، فيمكنك الاتصال بي مباشرة أو ترك مشكلة في المستودع.
هذا المشروع عبارة عن تطبيق لمحرك بحث يعتمد على مكتبة Boost، ويهدف إلى توفير نظام بحث فعال ودقيق خصيصًا للبحث في مستندات Boost. من خلال شرح عملية بناء محرك البحث، بدءًا من المعالجة المسبقة للبيانات وحتى إنشاء الفهرس، وحتى معالجة استعلام البحث وعرض النتائج، يوضح هذا المشروع كيفية إنشاء نظام محرك بحث كامل. تغطي مجموعة التكنولوجيا C++، وBoost Library، وHtml، وCSS، وJavaScript، مما يحقق بناء فهرس الواجهة الخلفية وتفاعل المستخدم الأمامي. الوظائف الأساسية للمشروع شاملة، وقد تمت إضافة ميزات متقدمة مثل إحصائيات تكرار الكلمات والفهارس المحدثة ديناميكيًا وفرز أولويات نتائج البحث، مما يحسن بشكل كبير من كفاءة البحث ودقته. وهذا يجعل محرك البحث مناسبًا بشكل خاص للمطورين للعثور بسرعة على المستندات الفنية التي يحتاجونها عند استخدام مكتبات Boost، مما يؤدي إلى تحسين كفاءة التطوير وإمكانية الوصول إلى المستندات بشكل كبير.
من الواضح أن البحث عن عدد كبير من المستندات والمحتوى الموجود في المستندات هو سلوك يستغرق وقتًا طويلاً ويتطلب جهدًا كبيرًا. إذا قمت باجتيازها مباشرة والوصول إليها واحدة تلو الأخرى، فلن تستجيب الخدمة بشكل أساسي لفترة طويلة. لهذا السبب، هناك حاجة إلى طريقة أسرع وأكثر ملاءمة لتخطيط وإدارة كمية كبيرة من البيانات لتحقيق بحث سريع. بناء الفهرس هو جوهر حل هذه المشكلة.
الفهرس المزعوم هو إرفاق ملصق بالمستند والبحث بسرعة بناءً على الملصق. تعد إدارة التسميات أقل إرهاقًا بكثير من إدارة المستندات، وهو السبب الأساسي لبناء الفهرس.
تعد مكتبة Boost مصطلحًا عامًا لبعض مكتبات C++ التي توفر امتدادات للمكتبة القياسية للغة C++. تم تطويره وصيانته بواسطة مجتمع Boost. يمكن أن تعمل مكتبة Boost بشكل مثالي مع مكتبة C++ القياسية وتوفر وظائف موسعة لها. يوفر موقع Boost عددًا كبيرًا من المستندات. يمكن أن يساعدنا استخدام محرك البحث في العثور على المستندات التي نحتاجها بدقة وسرعة في عدد كبير من المستندات.
الواجهة الخلفية: 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
[!ملاحظة] البيئة التي أستخدمها هي:
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
تثبيت كميك:
تثبيت فيجوال ستوديو:
تثبيت مكتبة التعزيز:
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
لينكس (أوبونتو، سينت أو إس)
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
.
يمكن تحسين جزء السجل بشكل أكبر.