هذا هو مكون إضافي للبحث عن نصي للبحث عن TANCENT على tantivy.
Tantivy هي مكتبة محرك بحث كامل النص مستوحاة من Apache Lucene وكتابة في Rust.
يصف المخطط النوع (السلسلة ، النص ، U64) للحقل وكذلك كيف يجب معالجته.
نوع حقل المخطط المدعوم:
| نوع الحقل | وصف |
|---|---|
| خيط | تكوين نوع حقل السلسلة |
| نص | تكوين نوع حقل النص |
| U64 | تكوين نوع حقل البتات 64 بتات غير موقعة |
| i64 | تم توقيع 74 بت أعداد صحيحة 64 تكوين نوع الحقل |
| F64 | 64 بت تعويم 64 تكوين نوع الحقل |
| تاريخ | موقعة 64 بتس نوع حقل التكوين نوع حقل |
| الوجه | الوجه الهيرات |
| بايت | بايت (واحد لكل وثيقة) |
يشبه المشغلون ، أو يجب أن يكونوا في حالة كبيرة
المصطلحات البسيطة : "على سبيل المثال: Barack Obama يتم تمييزها ببساطة باستخدام Tantivy's Simpletokenizer ، وبالتالي تصبح [" Barack "،" Obama "]. ثم يتم البحث في المصطلحات ضمن الشروط الافتراضية لمحلل الاستعلام.
على سبيل المثال ، إذا كان الجسم والعنوان هما الحقول الافتراضية ، فإن مصطلحات الأمثلة لدينا هي ["العنوان: باراك" ، "الجسم: باراك" ، "العنوان: أوباما" ، "الجسم: أوباما"]. بشكل افتراضي ، فإن جميع الحقول الرمزية والمفهرسة هي الحقول الافتراضية.
تتم معالجة مصطلحات متعددة على أنها أو: أي وثيقة تحتوي على واحدة على الأقل من المصطلح سوف تمر بالتسجيل.
هذا السلوك أبطأ ، ولكنه ليس فكرة سيئة إذا كان المستخدم يفرز حسب الأهمية: عادة ما يقوم المستخدم بالمسح من خلال المستندات القليلة الأولى من أجل تقليل الأهمية وسيتوقف عندما لا تكون المستندات ذات صلة بعد الآن.
مشغلي منطقية : و ، أو. ويأخذ الأسبقية أو ، بحيث يتم تفسير A و B أو C على أنها (A و B) أو C.
بالإضافة إلى مشغلي Boolean ، يمكن أن تساعد - + +. هذه المشغلين كافية للتعبير عن جميع الاستفسارات باستخدام مشغلي منطقية. على سبيل المثال ، يمكن كتابة x و y أو z (( +x +y) z). بالإضافة إلى ذلك ، يمكن لهذه المشغلين المساعدة في تحديد الاستعلامات "الاختيارية المطلوبة". (+xy) يطابق نفس المستند المحدد ببساطة X ، ولكن Y سوف يساعد في تحسين النتيجة.
المصطلحات السلبية : عن طريق إعداد مصطلح بواسطة A -، يمكن استبعاد مصطلح من البحث. هذا مفيد في إزالة الاستعلام. مثل التفاح
يجب أن تكون المصطلحات : من خلال إعداد مصطلح بواسطة A +، يمكن إجراء مصطلح مطلوب للبحث.
شروط العبارات : أصبحت المصطلحات المقتبسة عمليات البحث في الحقول التي تحتوي على مواقف فهرسة. على سبيل المثال ، العنوان: "باراك أوباما" لن يجد سوى مستندات لها "باراك" تليها مباشرة "أوباما".
مصطلحات النطاق : يمكن إجراء عمليات البحث عن النطاق عن طريق تحديد Bitt and End Bound. هذه يمكن أن تكون شاملة أو حصرية. على سبيل المثال ، العنوان: [A إلى C} ستجد جميع المستندات التي تحتوي عنوانها على كلمة معجمية بين A و C (الحد الأدنى الشامل ، الحصري الحصري). الحدود الشاملة [] ، حصرية هي {}.
قيم التاريخ : يدعم محلل الاستعلام RFC3339 التواريخ المنسقة. على سبيل المثال "2002-10-02T15: 00: 00.05Z"
جميع مستندات الاستعلام : سوف يتطابق سهل * مع جميع المستندات في الفهرس.
/// create a instance of SearchEngine and set it up
final engine = SearchEngine ();
SearchEngine . setup ();
/// get the path which used to store index files
final _path = await getApplicationDocumentsDirectory ().path;
/// define the schema of the data which wanted to be indexed
final _schema = r'{"id": "i64", "timestamp": "date", "content": "text"}' ;
/// open a exists one or create a new one on the device
engine. openOrCreate (_path, _schema);
/// encode the data object to a json string
final _doc = jsonEncode (dataObject);
/// start to index and store the data
await engine. index (_doc);
/// give the query keywords and the field which to search on
final res = await engine. search ( '关键字 关键词' , [ 'content' ], 1 , 10 );
/// remove a specify document by giving a field of u64 and it's value
/// document can't be deleted by text field, please use string field
await engine. deleteByU64 ( 'id' , 141906710246850560 );
