البحث عن النص الكامل من جانب العميل استنادًا إلى بحث js ولكن مع دعم إضافي لعامل الويب للحصول على أداء أفضل.
تحقق من بحث الإعادة للحصول على مثال للتكامل.
أو قم بتثبيته بنفسك باستخدام NPM:
npm install --save js-worker-search
تعمل هذه الأداة المساعدة، المتشعبة من بحث JS، على إنشاء فهرس بحث وإجراء عمليات بحث فعلية. فهو يكتشف تلقائيًا إمكانيات البيئة الحالية (المتصفح أو العقدة) ويستخدم تطبيقًا قائمًا على عامل الويب عندما يكون ذلك ممكنًا. في حالة عدم توفر دعم عامل الويب، يتم إجراء البحث على مؤشر ترابط (واجهة المستخدم) الرئيسي.
تحدد SearchApi الطرق العامة التالية:
constructor ({ caseSensitive, indexMode, tokenizePattern })
بشكل افتراضي، يقوم SearchApi
بإنشاء فهرس لمطابقة جميع السلاسل الفرعية. يمكنك تجاوز هذا السلوك عن طريق تمرير معلمة indexMode
المسماة. القيم الصالحة هي INDEX_MODES.ALL_SUBSTRINGS
و INDEX_MODES.EXACT_WORDS
و INDEX_MODES.PREFIXES
.
تكون عمليات البحث غير حساسة لحالة الأحرف بشكل افتراضي ويتم تقسيمها على جميع أحرف المسافات البيضاء. اقرأ أدناه للحصول على مزيد من المعلومات حول تخصيص الخيارات الافتراضية.
indexDocument (uid, text)
إضافة أو تحديث uid في فهرس البحث وربطه بالنص المحدد. لاحظ أنه في هذا الوقت لا يمكن إضافة uids أو تحديثه إلا في الفهرس، وليس إزالته.
حدود:
search(query)
يبحث في الفهرس الحالي عن نص الاستعلام المحدد. سيتم قبول uids التي تطابق جميع الكلمات الموجودة في النص فقط. إذا تم توفير سلسلة استعلام فارغة، فسيتم إرجاع كافة uids المفهرسة.
عمليات البحث في المستندات غير حساسة لحالة الأحرف (على سبيل المثال، سيتطابق "بحث" مع "بحث"). تستخدم عمليات البحث في المستندات مطابقة السلسلة الفرعية (على سبيل المثال، سيتطابق كل من "na" و"me" مع "name").
حدود:
ستُرجع هذه الطريقة مجموعة من uids.
terminate()
إذا كان البحث قيد التشغيل في عامل الويب، فسيؤدي ذلك إلى إنهاء العامل للسماح بجمع البيانات المهملة.
استخدم واجهة برمجة التطبيقات كما يلي:
import SearchApi from 'js-worker-search'
const searchApi = new SearchApi ( )
// Index as many objects as you want.
// Objects are identified by an id (the first parameter).
// Each Object can be indexed multiple times (once per string of related text).
searchApi . indexDocument ( 'foo' , 'Text describing an Object identified as "foo"' )
searchApi . indexDocument ( 'bar' , 'Text describing an Object identified as "bar"' )
// Search for matching documents using the `search` method.
// In this case the promise will be resolved with the Array ['foo', 'bar'].
// This is because the word "describing" appears in both indices.
const promise = searchApi . search ( 'describing' )
بشكل افتراضي، يقوم SearchApi
بإنشاء فهرس لمطابقة جميع السلاسل الفرعية. يمكنك تجاوز هذا السلوك عن طريق تمرير معلمة indexMode
إلى المُنشئ كما يلي:
import SearchApi , { INDEX_MODES } from 'js-worker-search'
// all-substrings match by default; same as current
// eg "c", "ca", "a", "at", "cat" match "cat"
const searchApi = new SearchApi ( )
// prefix matching (eg "c", "ca", "cat" match "cat")
const searchApi = new SearchApi ( {
indexMode : INDEX_MODES . PREFIXES
} )
// exact words matching (eg only "cat" matches "cat")
const searchApi = new SearchApi ( {
indexMode : INDEX_MODES . EXACT_WORDS
} )
افتراضيًا، يقوم SearchApi
بتقسيم النص إلى كلمات (رموز مميزة) باستخدام المسافات والأسطر الجديدة كحرف محدد. إذا كنت تريد توفير قاعدة التقسيم الخاصة بك، فقم بتمرير RegExp إلى المُنشئ الذي يحدد النمط، كما يلي:
// Custom tokenizer pattern to include all non alphanumerics as delimeters
// ex: searching "Swift" matches "Thomas Swift" and "Thomas (Swift)" but not "swiftly tilting"
const searchApi = new SearchApi ( {
indexMode : INDEX_MODES . EXACT_WORDS ,
tokenizePattern : / [^a-z0-9]+ / ,
} )
يقوم المطهر الافتراضي بإجراء بحث غير حساس لحالة الأحرف. إذا كنت تريد تجاوز هذا السلوك وإجراء بحث حساس لحالة الأحرف، فاضبط البتة الحساسة لحالة الأحرف على true، كما يلي:
// custom sanitizer for case-sensitive searches
const searchApi = new SearchApi ( {
caseSensitive : true
} )
افتراضيًا، تقوم أداة البحث المساعدة فقط بإرجاع المستندات التي تحتوي على كل رمز بحث مميز. يمكن تهيئته لإرجاع المستندات التي تحتوي على أي رمز بحث مميز.
// Change search behavior from AND to OR
const searchApi = new SearchApi ( {
matchAnyToken : true
} )
يتم تعقب التغييرات في سجل التغيير.
js-worker-search متاح بموجب ترخيص MIT.