CompleteSearch هو محرك بحث سريع وتفاعلي للبحث عن البادئات الحساسة للسياق في مجموعة معينة من المستندات. فهو لا يوفر نتائج بحث فقط، مثل محرك البحث العادي، بل يوفر أيضًا إكمالات لكلمة الاستعلام الأخيرة (ربما المكتوبة جزئيًا فقط) التي تؤدي إلى النتيجة. يمكن استخدام هذا لتوفير دعم فعال للغاية لمجموعة متنوعة من الميزات: الإكمال التلقائي للاستعلام، والبحث متعدد الأوجه، والبحث عن المرادفات، والبحث المتسامح مع الأخطاء، والبحث الدلالي. توجد قائمة بالمنشورات حول تقنيات البحث الكامل وتطبيقاته العديدة في نهاية هذه الصفحة.
للحصول على عرض توضيحي لمجموعات البيانات المختلفة، ما عليك سوى مراجعة هذا المستودع واتباع التعليمات أدناه. باستخدام سطر أوامر واحد، يمكنك الحصول على عرض توضيحي عملي (يمكنك الاختيار من بين عدة مجموعات بيانات، يبلغ حجم كل منها بضعة ملايين من المستندات، لذا فهي ليست كبيرة بشكل خاص، ولكنها ليست صغيرة أيضًا). يتوسع برنامج CompleteSearch ليشمل مجموعات تحتوي على عشرات أو حتى مئات الملايين من المستندات، دون أن تفقد تفاعلها.
قم بالتحقق من المستودع وقم ببناء صورة عامل الإرساء
git clone https://github.com/ad-freiburg/completesearch
cd completesearch
docker build -t completesearch .
يقوم سطر الأوامر التالي بإنشاء فهرس بحث ثم يبدأ تشغيل خادم البحث لمجموعة البيانات المحددة عبر متغير DB
(يعمل اسم أي دليل فرعي للتطبيقات). ضمن PORT
المحدد، يكون لديك واجهة مستخدم عامة، بالإضافة إلى واجهة برمجة التطبيقات (انظر القسم 4 أدناه).
export DB=movies && PORT=1622 && docker run -it --rm -e DB=${DB} -p ${PORT}:8080 -v $(pwd)/applications:/applications -v $(pwd)/data/:/data -v $(pwd)/ui:/ui --name completesearch.${DB} completesearch -c "make DATA_DIR=/data/${DB} DB=${DB} csv pall start"
يقوم سطر الأوامر هذا بتنزيل ملف CSV وفك ضغطه، وإنشاء الفهرس، وبدء تشغيل الخادم، كل ذلك دفعة واحدة. إذا كنت قد قمت بالفعل بتنزيل ملف CSV، فلن يتم تنزيله مرة أخرى (ملف Makefile المستهدف بتنسيق csv:
إذن ليس له أي تأثير). إذا كنت قد قمت بالفعل بإنشاء الفهرس مرة واحدة، فيمكنك حذف هدف Makefile pall:
(والذي يرمز إلى حساب الكل مسبقًا).
اقرأ هذا القسم إذا كنت تريد أن تفهم بشكل أعمق قليلاً ما يحدث مع سطر الأوامر الرائع أعلاه. يقوم سطر الأوامر أولاً بإنشاء صورة عامل إرساء من الكود الموجود في هذا المستودع. حتى الان جيدة جدا. ثم يقوم بتشغيل حاوية عامل إرساء، والتي تقوم بتركيب ثلاثة مجلدات، والتي سنشرحها بإيجاز بعد ذلك:
التطبيقات يحتوي هذا المجلد على التكوين الخاص بكل تطبيق. يحتوي كل تكوين على ملفين فقط. Makefile
يحدد كيفية إنشاء الفهرس (وهذا قابل للتخصيص بدرجة كبيرة، انظر أدناه). و config.js
لتخصيص واجهة المستخدم العامة.
البيانات يحتوي هذا المجلد على ملف CSV مع البيانات الأصلية (سجل واحد لكل سطر، في الأعمدة) وملفات الفهرس. لديهم جميعا بادئة مشتركة. انظر أدناه لمزيد من المعلومات حول الفهرس.
واجهة المستخدم يحتوي هذا المجلد على التعليمات البرمجية لواجهة المستخدم العامة. إذا كنت تريد فقط استخدام CompleteSearch كواجهة خلفية وإنشاء واجهة المستخدم الخاصة بك، فلن تحتاج إلى تحميل هذا المجلد. ومع ذلك، من الجيد أن يكون لديك دائمًا واجهة مستخدم عاملة متاحة للاختبار، دون أي عمل إضافي.
مثل جميع محركات البحث، ينشئ CompleteSearch فهرسًا يمكنه من خلاله الإجابة على الاستفسارات بكفاءة. إنه ليس مؤشرًا مقلوبًا عاديًا، ولكنه شيء أكثر روعة: مؤشر نصف مقلوب أو مؤشر hybird (HYB) . ليس عليك أن تفهم هذا إذا كنت تريد فقط استخدام CompleteSearch. ولكن إذا كنت مهتمًا، يمكنك معرفة المزيد عنها في المنشورات أدناه.
لإنشاء الفهرس، يتطلب CompleteSearch ملفي إدخال، أحدهما باللاحقة .words
والآخر باللاحقة .docs
. الأول يحتوي على محتويات المستندات الخاصة بك مقسمة إلى كلمات. والثاني يحتوي على البيانات التي تريد عرضها كزيارات لمحرك البحث. عادة ما يكون الاثنان مرتبطين، ولكن ليس بالضبط نفس الشيء. التنسيق بسيط جدًا ويتم وصفه بالمثال هنا.
إذا كانت لديك رغبات خاصة، فيمكنك إنشاء ملفي الإدخال هذين بنفسك، من أي بيانات لديك. ثم لديك السيطرة الكاملة على ما سوف يفعله CompleteSearch وما يمكن أن يفعله لك. ومع ذلك، في معظم التطبيقات، يمكنك استخدام محلل CSV العام الخاص بنا. فهو يأخذ ملف CSV (سجل واحد لكل سطر، مع عدد ثابت من الأعمدة في كل سطر) كمدخل، ومن ثم يتم إنتاج ملف .words وملف .docs .
تحليل CSV قوي جدًا وقابل للتخصيص بدرجة كبيرة. يمكنك أن ترى كيف يتم استخدامه في ملف Makefile لمختلف أمثلة التطبيقات (في الدلائل الفرعية applications
الدليل). يتم وصف مجموعة فرعية من الخيارات بمزيد من التفاصيل هنا. للحصول على قائمة كاملة، انظر إلى الكود الذي يوزع الخيارات.
يُطلق على الملف الثنائي لبدء تشغيل محرك CompleteSearch اسم startCompletionServer
. إنه قوي جدًا ولديه الكثير من الخيارات. بالنسبة لبعض أمثلة الاستخدامات، يمكنك إلقاء نظرة على Makefile
في applications
المخرج وعلى Makefile
المضمن لأحد تطبيقات الأمثلة. يمكن العثور على وثائق مفصلة لجميع الخيارات في README.md في دليل src.
بمجرد البدء، يمكنك طرح استفسارات باستخدام واجهة المستخدم العامة والقابلة للتخصيص (انظر أعلاه). أو يمكنك أن تطلب من الواجهة الخلفية مباشرة، عبر واجهة برمجة التطبيقات HTTP التي يوفرها startCompletionServer
. واجهة برمجة التطبيقات (API) بسيطة جدًا ويتم وصفها في نهاية هذه الصفحة. العب به للحصول على أحد الأمثلة على التطبيقات للتعرف على ما يفعله. يمكنك أيضًا إلقاء نظرة على كود JavaScript (البسيط إلى حد ما) لواجهة المستخدم العامة للتعرف على كيفية عمله وما يمكن استخدامه من أجله.
لإظهار مثيل CompleteSearch الخاص بك لأصدقائك، قد ترغب في تشغيله تحت عنوان URL فاخر، وليس http://my.weird.hostname.somewhere:76154
. لنفترض أن لديك خادم ويب Apache يعمل على جهازك. بعد ذلك، يمكنك إضافة القسم التالي في apache.conf
الخاص بك أو في ملف تكوين منفصل مضمن بواسطة apache.conf
. يجب عليك استبدال servername
باسم المجال المؤهل بالكامل (FQDN) للجهاز الذي يعمل عليه خادم الويب Apache. يتعين عليك استبدال hostname
بـ FQDN الخاص بالجهاز الذي تعمل عليه الواجهة الأمامية لـ CompleteSearch. يمكن أن يكون هذا هو نفس الجهاز مثل servername
، ولكن ليس من الضروري أن يكون كذلك.
< VirtualHost *:80>
ServerName example.cs.uni-freiburg.de
ServerAlias dblp example.cs.uni-freiburg.de
ServerAdmin webmaster@localhost
ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://< hostname >:5000/
ProxyPassReverse / http://< hostname >:5000>/
...
</ VirtualHost >
فيما يلي بعض المنشورات التي تشرح التقنيات الكامنة وراء البحث الكامل وما يمكن استخدامه من أجله. تم إنجاز هذا العمل في معهد ماكس بلانك للمعلوماتية. لقد مضى وقت طويل بالفعل، ولكن تبين أن الميزات والكفاءة التي يوفرها CompleteSearch لا تزال على أحدث طراز.
اكتب أقل، ابحث عن المزيد: الإكمال التلقائي السريع باستخدام فهرس مقتضب @ SIGIR 2006
محرك البحث الكامل: تفاعلي وفعال ونحو تكامل IR&DB @ CIDR 2007
ESTER: بحث فعال عن النص والكيانات والعلاقات @ SIGIR 2007
توسيع الاستعلام التفاعلي الفعال مع البحث الكامل @ CIKM 2007
بحث الإكمال التلقائي الحساس للمخرجات @ استرجاع المعلومات 2008
البحث الدلالي عن النص الكامل باستخدام ESTER: قابل للتطوير وسهل وسريع في ICDM 2008