P-Search هي أداة emacs للعثور على الأشياء. فهو يجمع بين المفاهيم من نظرية البحث عن المعلومات ونظرية البحث بايزي لمساعدة المستخدم في العثور على المستندات.
عمليات البحث المنطقية (أي أن المستند يحتوي على كلمة "X") ، في حين أن البسيطة والمفيدة ، فإنها لا تتطابق مع المعتقدات السابقة للباحث فيما يتعلق بمكان وجود الملفات ذات الصلة. في كثير من الأحيان يكون للباحث أفكار محددة حول مكان وجود المستند. مثل نوع الملف الذي قام بتأليف المستند ، عندما تم إنشاء المستند. غالبًا ما لا يكون الباحث واثقًا تمامًا من كيفية ظهور مصطلحات Seach أو ما إذا كانت تظهر على الإطلاق.

حتى يتوفر P-Search على ELPA/MELPA ، سيتعين عليك تثبيت هذه الحزمة يدويًا. التبعية الوحيدة للبحث P هي كومة.
باستخدام Quelpa:
(quelpa ' (p-search :repo " zkry/p-search " :fetcher github))باستخدام مستقيم:
( use-package p-search :straight ( :host github :repo " https://github.com/zkry/p-search.git " ))باستخدام Elpaca:
( use-package p-search :elpaca ( :host github :repo " https://github.com/zkry/p-search.git " )) يمكن بدء جلسة بحث باستخدام أمر p-search سيقوم الأمر بإعداد الجلسة للبحث عن الملفات إما في دليل المشاريع (انظر Project.EL) في حالة وجود مشروع أو الدليل الحالي. قم بتنفيذ p-search باستخدام البادئة Cu لتشكيل جلسة فارغة (TODO).
تتألف جلسة البحث P من ثلاثة أقسام رئيسية: المولدات المرشحة ، والريالين ، ونتائج البحث.

المولدات المرشحة هي أجزاء جلسة البحث التي تعدد جميع مرشحو البحث الممكنين. مرشح البحث هو كيان يحتوي على مجموعة من خصائص المفاتيح/القيمة ، 'content والعنوان 'title المعدلة. قد توجد خصائص أخرى تتيح لك استخدام وظائف سابقة إضافية. في جلسة البحث P-Search Run p-search-add-candidate-generator ( C ) لإضافة مولد مرشح جديد.
يمكنك حذف مسبقًا مع الأمر p-search-kill-entry-at-point .
قسم Priors هو الجزء الذي تضيف فيه معايير البحث إلى جلستك. قم بتشغيل p-search-add-prior ( P ) لإضافة وظيفة سابقة.
أولاً ، يجب عليك تحديد نوع مسبق تريد إضافته. ثم سيتعين عليك تكوين المسبق. سيؤدي ذلك أولاً إلى حثك على أي حقول مفيدة.
بعد ذلك ، ستظهر قائمة عابرة جديدة ، مما يتيح لك تكوين المسبق. سيكون لكل وظيفة سابقة مجموعة من المدخلات والخيارات الخاصة بها ، لكن كل وظيفة ستتيح لك تحديد أهميتها وما إذا كان ينبغي اتخاذ التكميح .
يمكنك حذف مسبقًا باستخدام الأمر p-search-kill-entry-at-point ( k ).
يتم إعطاء كل مستند مرشح درجة من كل وظيفة سابقة اعتمادًا على مدى تطابق الوظيفة السابقة.
على سبيل المثال ، لنفترض أن لديك بحثًا عن استعلام نص. سيقوم الاستعلام بترتيب كل مستند على مقياس من 0 إلى 1. ثم يتم تعديل هذه النتيجة بالأهمية. إذا قمت بتعيين أهمية عالية ، فسيتم دفع الاحتمالات إلى أقصى الحدود. أهمية منخفضة تدفع الاحتمالات إلى 0.5 ، وبالتالي خفض تأثيرها.
لذلك على سبيل المثال ، إذا كان استعلام البحث عن النص ، يمثل وثيقة على أنها ذات صلة كبيرة ، 0.7 ، ولكن تم إعطاؤها أهمية منخفضة ، فقد يتم تعديل احتماله إلى 0.55 ، وبالتالي خفض تأثيره. من ناحية أخرى ، إذا كان استعلام النص يتطابق بشكل سيئ مع إعطاء درجة قدره 0.3 ولكن أهميته منخفضة ، فسيتم رفع احتماله إلى 0.45.
[مولد المرشح] | | [perfor_x] [perial_y] | | -DOC_A-> أهمية _x (Score_X_A) ✖ armise_y (Score_Y_A) | | -DOC_B-> أهمية _x (Score_x_B) ✖ issicary_y (score_y_b) ... | --- DOC_C-> أهمية _x (Score_x_C) ✖ issicary_y (Score_y_C)
البحث عن النص هو مكون بارز في P-Search. على الرغم من أن عمليات البحث النصية تعمل بنفس الطريقة التي تعمل بها الوظائف السابقة الأخرى (مما يؤدي إلى درجة من 0 إلى 1) ، فإن mecahnisms وراءها أكثر تعقيدًا.
يمكنك إنشاء استعلام نصي عن طريق تحديد "استعلام نص" في القائمة العابرة عند تشغيل p-search-add-prior .
سيتم بعد ذلك مطالبتك باستعلامك. اعتمادًا على الاستعلام الذي تكتبه ، سيتم إنشاء عملية واحدة أو أكثر لأداء البحث.
كما ذكرنا سابقًا ، يحتوي كل وثيقة مرشح بحث على 'content خاصية. يتم إجراء البحث النصية في هذا الحقل. كما يمكنك على الأرجح Immagine ، فإن الاضطرار إلى البحث في كل مستند على خيط Emacs Lisp واحد بطيء ، لذلك يمكن أن يكون لكل وظيفة مولد مرشح طريقة أسرع لأداء البحث. هذا هو السبب في أنك ترى أداة البحث مثل :grep أو :rg على مولد مرشح نظام الملفات. عند إجراء استعلام نصي على المستندات القادمة من هذا ، سيعتمد على هذه الأداة لأداء البحث.
بالنسبة لاستعلام النص ، يتم فصل كل نتيجة بحث. لذلك إذا قمت بكتابة teacher student school فستقوم بإجراء ثلاثة عمليات بحث منفصلة عن المصطلحات الثلاثة. سيقوم كل مصطلح بإنشاء درجاته الخاصة لكل وثيقة وسيتم دمجها بعد ذلك لتشكيل النتيجة النهائية. يمكنك استخدام عروض الأسعار لتجميع الكلمات للبحث في شيء ككل ، وبالتالي فإن "teacher student school" ستقوم ببحث واحد مع الكلمات بتسلسل.
ستتم معالجة المصطلحات غير المخصصة في متغيرات متعددة وتفتيشها بالتوازي. لذلك على سبيل المثال ، سوف يبحث teacherStudentSchool على حد سواء "TeacherStudentschool" (حالة غير حساسة) ، ولكن أيضًا "Teacher_Student_School" ، و "School-Student-School" (مع درجة أقل) ، ومصطلحات "المعلم" ، "الطالب" ، و "المدرسة" (بالنظر إلى درجة أقل).
يمكنك تعزيز مصطلح مع ^ حتى تعطي teacher student^ school دفعة للطالب. يمكنك أيضًا تحديد دفعة رقمية ، كما في teacher student^2 school^3 .
يمكنك البحث عن المصطلحات التي تحدث بالقرب من بعضها البعض باستخدام بناء الجملة (term1 term2 ...)~ . اعتمادًا على قيمة p-search-default-near-line-length ، ستكون هناك حاجة إلى أن تكون العناصر ضمن عدد معين من الخطوط من بعضها البعض.
ستظهر لك P-Search فقط أول قيم p-search-top-n لنتائج البحث. إذا كنت لا ترى النتائج ذات الصلة ، فقد ترغب في التفكير في إضافة معايير البحث. يمكنك أيضًا تشغيل الأمر p-search-observe لخفض احتمال وجود نتيجة معينة. القيام بذلك سيؤدي إلى خفض احتمال العنصر عن طريق ضربه بمقدار 0.3. مع البادئة Cu p-search-observe ، يمكنك تحديد الاحتمال. بعد إجراء الملاحظة ، سيتم إعادة حساب الاحتمالات وسيتم تحديث النتائج.
p-search-peruse-mode هو وضع بسيط عالمي تجريبي ، عند النشاط ، سيتتبع النسبة المئوية للملفات التي شاهدتها. سيتم تحديث نسبة العرض في قسم نتائج البحث.
يحتوي P-Search على عدد من الميكانيكيين لتسريع عملية البحث الخاصة بك. من ناحية ، يمكنك إنشاء أمر برمجي واستدعاء وظائف البحث P المختلفة لتشكيل جلسة حسب رغبتك. من ناحية أخرى ، فإن ببساطة وضع إشارة مرجعية للجلسة باستخدام bookmark-set المرجعية (عادةً ما تكون ملزمة Cx rm ) سيتيح لك حفظ الجلسة والمولدات المرشحة والمرشحين ، للوصول بسرعة في المستقبل.
هناك طريقة أخرى لتكوين سلوك P-Search من خلال ضبط المتغير p-search-default-command-behavior . بواسطة setItNg ، فإن القيمة على مستوى العالم ، يمكنك تكوين كيفية تصرف الأمر p-search . يمكنك أيضًا تعيين المتغير عبر ملف ".dir-locals.el" ، كما يلي ، للحصول على إعدادات محلية الدليل:
((p-search-mode . ((p-search-default-command-behavior . ( :candidate-generator p-search-candidate-generator-filesystem :args ((base-directory . " ~/dev/ go/delve/cmd " ))))))) يمكنك تشغيل Command p-search-show-session-preset لمشاهدة الجلسة الحالية الممثلة ككائن LISP. من خلال تمرير بنية البيانات هذه إلى PUSTION p-search-setup-buffer ، يمكنك إنشاء جلسة P-Search التي تريدها برمجيًا.