محرك بحث من جامعة صن يات صن
Yat-Search Engine هو محرك بحث نصي فعال يدعم تحميل ملفات متعددة، والاستعلام الدقيق، والاستعلام الغامض، واستعلام التعبير العادي. يهدف هذا المشروع إلى توفير حل سريع ودقيق للبحث عن النص، مع وظائف التخزين والتسجيل المستمرة، ويدعم الواجهة الصينية.
تجدر الإشارة إلى أن البحث الصيني لا يمكن إكماله إلا من خلال خيار "البحث الغامض"، ويجب أن يكون هناك رمز "."
هذا المشروع لأغراض التعلم والتواصل فقط، يرجى عدم استخدامه لأغراض تجارية. المؤلف الأصلي ليس مسؤولاً عن أي عواقب تنشأ عن استخدام هذا المشروع.
الإصدار الحالي لا يزال قيد التطوير وقد لا يتم تنفيذ بعض الميزات بالكامل بعد. نرحب بمساهمات واقتراحات الكود!
المهمة الرئيسية لدورة "هياكل البيانات والخوارزميات" لكلية علوم الكمبيوتر بجامعة صن يات صن في فصل الخريف لعام 2024.
الإصدار الحالي: v1.4.0
└──Yat-Search-Engine
├── CMakeLists.txt
├── LICENSE
├── dat
│ └── index.dat
├── include
│ ├── RegexSearch.h
│ └── TextSearchEngine.h
├── log
│ └── query_log.txt
├── logo_pic
│ ├── logo.txt
│ └── logo_out.txt
├── readme.md
├── source-text
│ ├── bible.txt
│ ├── text1.txt
│ ├── text2.txt
│ └── otherfile...
└── src
├── RegexSearch.cpp
├── TextSearchEngine.cpp
└── main.cpp
يحتوي جدول التجزئة على استعلام v1.0.0
CustomHash
، واستخدام unordered_map
في TextSearchEngine
لدمج وظيفة التجزئة لتحسين أداء الاستعلام.قراءة الملف v1.0.1
دعم الملفات المتعددة (مكتمل) v1.1.0
main.cpp
للسماح للمستخدمين بإدخال أسماء ملفات متعددة، وسيقوم النظام بتحميل هذه الملفات واحدًا تلو الآخر للفهرسة.دعم التعبيرات العادية (مكتمل) v1.1.1
RegexSearch
، واستخدم مكتبة C++ <regex>
لتنفيذ وظيفة الاستعلام بناءً على التعبيرات العادية، وإضافة الخيارات المقابلة إلى القائمة الرئيسية.الاستعلام الدقيق (مكتمل) v1.1.2
exactQuery
، والعثور بكفاءة على الكلمات الرئيسية المطابقة تمامًا من خلال unordered_map
، وعرض نتائج المطابقة.تصور نتائج البحث، مثل تقليد الطريقة التي يقوم بها المترجم بالإبلاغ عن الأخطاء (مكتملة) الإصدار 1.2.0
^
لتحديد موضع الكلمة الأساسية في الجملة، على غرار إشارة خطأ المترجم، لتحسين إمكانية القراءة.استعلام غير محدود، زر الخروج (مكتمل) v1.2.1
وظيفة التجزئة الجديدة (مكتملة) v1.3.1
CustomHash
الحالية وتحسين كفاءة معالجة تعارض التجزئة لتحسين أداء الاستعلام بشكل أكبر.دعم اللغة الصينية (مكتمل) v1.4.0
تحسين الأداء والمعالجة المسبقة (مكتملة) v1.3.1
واجهة المستخدم (مكتملة) v1.2.2
التخزين المستمر (مكتمل) v1.3.0
وظيفة السجل، وتسجيل سجل الاستعلام، وما إلى ذلك (مكتمل) v1.3.2
query_log.txt
لتسهيل على المستخدمين عرض سجلات التاريخ وتصحيح الأخطاء.دعم الإخراج الصيني (مكتمل) v1.4.0
تم تغيير طريقة التجميع من mingW إلى cmake (مكتمل) v1.4.0
أدخل الكل لإضافة كافة الملفات (مكتملة) v1.4.0
يرجى التأكد من تشغيله في بيئة Linux. قد تظهر الأحرف الصينية المشوهة في بيئة Windows. أدخل دليل العمل وقم باستنساخ المشروع محليًا:
git clone https://github.com/ouyangyipeng/Yat-Search-Engine.git
cd Yat-Search-Engine
تأكد من تثبيت CMake ومترجم يدعم C++17، مثل g++
أو clang++
. تم بالفعل تكوين ملف cmakelists.txt بخيارات الترجمة، ما عليك سوى تنفيذ الأمر التالي لتجميع المشروع. لاحظ أن المترجم الافتراضي موجود في /usr/bin/g++
. إذا كنت بحاجة إلى استخدام مترجمين آخرين، يرجى تعديل ملف CMakeLists.txt.
mkdir build # 假如没有build文件夹
cd build
cmake ..
cmake --build .
./YatSearchEngine
ضع الملف النصي الذي تريد البحث فيه في مجلد النص المصدر وتأكد من حفظ الملف بتنسيق txt.
بدء تشغيل البرنامج: بعد تشغيل الملف القابل للتنفيذ، سيعرض البرنامج واجهة الترحيب ويطالبك بالضغط على Enter للمتابعة.
تحميل الملف: أدخل الملف المراد تحميله وفقًا للمطالبات، وأدخل اسم الملف في كل مرة (يجب أن ينتهي بـ .txt)، وأدخل تم لإكمال تحديد الملف.
حدد نوع الاستعلام:
أدخل 1 لاستعلام دقيق.
أدخل 2 للاستعلام الغامض.
أدخل 3 لاستعلام التعبير العادي.
أدخل 4 للخروج من البرنامج.
أدخل محتوى الاستعلام: وفقًا لنوع الاستعلام المحدد، أدخل الكلمات الرئيسية أو التعبيرات العادية المقابلة.
عرض النتائج: ستعرض نتائج الاستعلام الجمل المطابقة وعلامات موقعها.
الخروج من البرنامج: حدد خيار الخروج، سيقوم البرنامج بحفظ الفهرس وتسجيل السجل قبل الخروج.
يتم حفظ سجل عملية الاستعلام في ملف query_log.txt ويمكن للمستخدمين عرض سجلات الاستعلام التاريخية وسجلات العمليات من خلال محرر النصوص.
نرحب بمساهمات واقتراحات الكود! يرجى إرسال طلب سحب أو تقديم تعليقاتك إلينا في المشكلات.
هذا المشروع مرخص بموجب ترخيص MIT. راجع ملف الترخيص للحصول على التفاصيل.