البرنامج المساعد للبحث الغامض لكيربي. لم يكن البحث عن المطابقات التقريبية لاستعلامات البحث في المحتوى الخاص بك بهذه السهولة من قبل.
تم إنشاء هذا البرنامج الإضافي أعلى مكتبة fuzzget PHP.
إذا كنت تستخدم بالفعل طريقة search
المضمنة في Kirby، فإن استبدالها بـ Fuzzy Search هو مجرد مسألة إعادة تسمية طريقة في مجموعة صفحات:
$query = get('q');
$articles = page('blog')
->children()
->visible()
- ->search($query, 'title|text');
+ ->fuzzySearch($query, 'title|text');
Fuzzy Search غير متوافق مع أي من الخيارات الأخرى المتاحة في طريقة search
Kirby.
باستخدام Fuzzy Search، يمكنك أيضًا البحث من خلال أساليب الصفحة المخصصة أو نماذج الصفحات. ما عليك سوى تضمين اسم الطريقة في المعلمة الأخيرة fuzzySearch
.
// site/plugins/methods.php
page:: $ methods [ ' authorName ' ] = function ( $ page ) {
$ author = $ page -> author ()-> value ();
if ( $ user = site ()-> user ( $ author )) {
return $ user -> firstname (). ' ' . $ user -> lastname ();
}
};
$ query = get ( ' q ' );
$ articles = page ( ' blog ' )
-> children ()
-> visible ()
-> fuzzySearch ( $ query , ' title|text|authorName ' );
يأتي البحث الغامض مزودًا بطريقة ميدانية سهلة الاستخدام تسمح لك بالبحث في حقول الصفحة التي تحتوي على مجموعة من البيانات، مثل الحقول المنظمة.
$ result = page ( ' faq ' )
-> topics ()
-> fuzzySearch ( $ query , ' question|answer ' );
ستكون $result
أيضًا كائنًا Field
وليس مجرد مصفوفة بسيطة. بهذه الطريقة تكون لديك الحرية في ربط أي تابع Field
، مثل toStructure
أو yaml
أو isEmpty
، بعد إجراء البحث.
$ result = page ( ' contact ' )
-> addresses ()
-> fuzzySearch ( $ query , ' city ' )
-> toStructure ();
يمكنك أيضًا استخدام وظيفة fuzzySearch
للبحث في مجموعة من المصفوفات الترابطية.
$ countries = [
[ ' name ' => ' Australia ' ],
[ ' name ' => ' Brazil ' ],
[ ' name ' => ' Canada ' ],
[ ' name ' => ' France ' ],
[ ' name ' => ' Germany ' ],
[ ' name ' => ' Portugal ' ],
[ ' name ' => ' United Kingdom ' ],
[ ' name ' => ' United States ' ]
];
$ results = fuzzySearch ( $ countries , ' Brasil ' );
إذا تركت المعلمة الأخيرة، فسيبحث Fuzzy Search في جميع المفاتيح (الحقول) في البيانات المقدمة:
site ()-> index ()-> fuzzySearch ( $ query );
إنه نفس استخدام حرف البدل *
.
site ()-> index ()-> fuzzySearch ( $ query , ' * ' );
يعد Fuzzy Search مرنًا جدًا عندما يتعلق الأمر باختيار الحقول التي يجب البحث فيها عن التطابقات. تحقق من الخيارات الأخرى:
إذا كنت تريد البحث عن مصطلح معين فقط في حقلي title
text
، فما عليك سوى تمرير أسمائهم في المعلمة الأخيرة مفصولة بـ |
:
site ()-> index ()-> fuzzySearch ( $ query , ' title|text ' );
هذا هو السكر النحوي لـ:
site ()-> index ()-> fuzzySearch ( $ query , [
' include ' => [ ' title ' , ' text ' ]
]);
بالطبع يمكنك أيضًا إدراج الحقول التي لا تريد البحث فيها:
site ()-> index ()-> fuzzySearch ( $ query , ' -author|-date ' );
ما سبق هو نفس القيام بما يلي:
site ()-> index ()-> fuzzySearch ( $ query , [
' ignore ' => [ ' author ' , ' date ' ]
]);
في هذا المثال، سيتم أخذ كافة الحقول في الاعتبار عند البحث باستثناء author
date
.
إذا كنت بحاجة إلى تضمين طريقة صفحة مخصصة أو طريقة نموذج صفحة، فيمكنك دمجها مع حرف البدل وتجاهل بناء الجملة.
site ()-> index ()-> fuzzySearch ( $ query , ' *|authorName|-date ' );
سيتضمن ما سبق جميع الحقول باستثناء date
بالإضافة إلى $page->authorName()
، في حالة ما إذا كانت طريقة صفحة مخصصة أو طريقة نموذج صفحة.
قم بتنزيل الملفات ووضعها داخل site/plugins/fuzzy-search
.
تجعل واجهة سطر أوامر Kirby تثبيت المكون الإضافي Fuzzy Search أمرًا سهلاً:
$ kirby plugin:install pedroborges/kirby-fuzzy-search
لا يمكن أن يكون التحديث أسهل، ما عليك سوى تشغيل:
$ kirby plugin:update pedroborges/kirby-fuzzy-search
يمكنك إضافة المكوّن الإضافي Fuzzy Search كوحدة فرعية لـ Git.
$ cd your/project/root
$ git submodule add https://github.com/pedroborges/kirby-fuzzy-search.git site/plugins/fuzzy-search
$ git submodule update --init --recursive
$ git commit -am "Add Fuzzy Search plugin"
التحديث سهل مثل تشغيل بعض الأوامر.
$ cd your/project/root
$ git submodule foreach git checkout master
$ git submodule foreach git pull
$ git commit -am "Update submodules"
$ git submodule update --init --recursive
سيتم توثيق جميع التغييرات الملحوظة في هذا المشروع على: https://github.com/pedroborges/kirby-fuzzy-search/blob/master/changelog.md
البرنامج المساعد Fuzzy Search هو برنامج مفتوح المصدر مرخص بموجب ترخيص MIT.
حقوق الطبع والنشر © 2017 بيدرو بورخيس [email protected]