من المفترض أن تعامل مكتبة Iresearch كفهرس مستقل قادر على فهرسة وتخزين القيم الفردية حرفيًا. تتم معالجة البيانات المفهرسة على أساس لكل نسخة/لكل مراجعة ، أي إصدار/مراجعة البيانات الحالية لا يتم تعديله أبدًا ويتم التعامل مع التحديثات/عمليات الإزالة كإصدارات/مراجعات جديدة للبيانات المذكورة. هذا يسمح لعمليات القراءة/الكتابة متعددة الخيوط على الفهرس. يعرض الفهرس وظيفة معالجة البيانات الخاصة به من خلال واجهة "كاتب" متعددة الخيوط تعامل كل مستندات مستند كمجموعة من الحقول للفهرس و/أو المتجر. يعرض الفهرس وظيفة استرجاع البيانات الخاصة به عبر واجهة "القارئ" التي تُرجع السجلات من فهرس يطابق استعلامًا محددًا. الاستعلامات نفسها هي أشجار الاستعلام التي تم إنشاؤها مباشرة باستخدام لبنات بناء الاستعلام المتوفرة في API. توفر البنية التحتية للاستعلام القدرة على طلب النتيجة التي تحددها تطبيق واحد أو أكثر من تطبيقات التصنيف/التسجيل. يعتبر منطق تنفيذ التصنيف/التسجيل قائمًا على المكونات الإضافية ومسندًا مكونًا خلال وقت التشغيل حسب الحاجة ، مما يتيح إضافة منطق التصنيف/التسجيل المخصص دون الحاجة إلى إعادة ترجمة مكتبة Iresearch.
يتكون الفهرس من أجزاء مستقلة متعددة ، تسمى الأجزاء وبيانات التعريف الفهرس. يقوم الفهرس البيانات الوصفية بتخزين معلومات حول قطاعات الفهرس النشط لإصدار/مراجعة فهرس معين. كل جزء فهرس هو فهرس نفسه ويتكون من المكونات المنطقية التالية:
اقرأ/كتابة الوصول إلى المكونات التي يتم تنفيذها عبر تنسيقات قائمة على البرنامج المساعد. قد يحتوي الفهرس على شرائح تم إنشاؤها باستخدام تنسيقات مختلفة.
يتم تمثيل سجل قاعدة البيانات كتجريد يسمى مستند. المستند هو في الواقع مجموعة من الحقول المفهرسة/المخزنة. من أجل معالجتها ، يجب أن يرضى كل حقل على الأقل مفهوم IndexedField أو StoredField .
لكي يكون النوع T ليكون IndexedField ، يجب أن تكون الشروط التالية راضية عن كائن m من النوع T :
| تعبير | يتطلب | الآثار |
|---|---|---|
m.name() | يجب أن يكون نوع الإخراج قابلاً للتحويل إلى irs::string_ref | تستخدم القيمة كاسم مفتاح. |
m.get_tokens() | يجب أن يكون نوع الإخراج قابلاً للتحويل إلى irs::token_stream* | يستخدم دفق الرمز المميز للاستعداد في إجراء عكس. إذا كانت القيمة هي حقل nullptr على أنه غير مفهرس. |
m.index_features() | يجب أن يكون نوع الإخراج قابلاً للتحويل ضمنيًا إلى irs::IndexFeatures | مجموعة من الميزات المطلوبة للتقييم أثناء الفهرسة. على سبيل المثال ، قد يحتوي على طلب من مواقع المعالجة والترددات. في وقت لاحق يمكن استخدام المعلومات التي تم تقييمها أثناء الاستعلام والتسجيل. |
m.features() | يجب أن يكون نوع الإخراج قابلاً للتحويل إلى const irs::flags& | مجموعة من الميزات المقدمة من المستخدم لترتبط بحقل. على سبيل المثال ، قد يحتوي على طلب تخزين معايير المجال. في وقت لاحق يمكن استخدام المعلومات المخزنة أثناء الاستعلام والتسجيل. |
لكي يتم StoredField النوع T ، يجب استيفاء الشروط التالية لكائن m من النوع T :
| تعبير | يتطلب | الآثار |
|---|---|---|
m.name() | يجب أن يكون نوع الإخراج قابلاً للتحويل إلى irs::string_ref | تستخدم القيمة كاسم مفتاح. |
m.write(irs::data_output& out) | يجب أن يكون نوع الإخراج قابلاً للتحويل إلى Bool. | يمكن للمرء أن يكتب بيانات تعسفية للدفقات التي يدل عليها out من أجل استرداد القيمة المكتوبة باستخدام index_reader API لاحقًا. إذا لم يكن هناك شيء مكتوب ولكن القيمة التي تم إرجاعها true ، فسيتم التعامل مع القيمة المخزنة على أنها العلم. إذا كانت القيمة التي تم إرجاعها false ، فلا يتم تخزين أي شيء حتى إذا تم كتابة شيء ما إلى out . |
تجريد تخزين البيانات الذي يمكنه إما تخزين البيانات في الذاكرة أو على نظام الملفات اعتمادًا على التنفيذ الذي تم إنشاء مثيل له. يقوم دليل يخزن على الأقل جميع إصدارات/مراجعات بيانات الفهرس قيد الاستخدام حاليًا. بالنسبة للحالة التي لا يوجد فيها مستخدمون نشطون للدليل ، يتم تخزين آخر إصدار/مراجعة للبيانات على الأقل. يمكن إزالة إصدارات/مراجعات البيانات غير المستخدمة عبر Directory_Cleaner. يتكون إصدار واحد/مراجعة للفهرس من قطعة واحدة أو أكثر من المقاطعة المرتبطة ، وربما مشاركتها ، مع الإصدار/المراجعة المذكورة.
مثيل واحد لكل كائن دليل يتم استخدامه لفهرسة البيانات. قد يتم فهرسة البيانات على أساس لكل توثيق أو مصادر من قارئ آخر لوظيفة دمج الدليل التافهي. ينتج كل commit() للكاتب نسخة/مراجعة جديدة لرؤية البيانات في الدليل المقابل. بالإضافة إلى ذلك ، توفر الواجهة أيضًا إمكانيات لإلغاء تجزئة الدليل للسماح بضغط شرائح الإصدار/المراجعة الأصغر في تمثيلات أكبر أكثر إحكاما. يدعم الكاتب المعاملات ثنائية الطور عبر أساليب begin() / commit() / rollback() .
عرض قابل لإعادة الاستخدام/قابل للإنجاز للفهرس في وقت معين. يمكن للقراء المتعددين استخدام نفس الدليل وقد يشيرون إلى إصدارات/مراجعات مختلفة للبيانات في الدليل المذكور.
v3.10 أو أحدث
v1.57.0 أو أحدث (الرؤوس فقط)
BOOST_ROOT= < path-to > /boost_1_57_0make
make installأو نقطة lz4_root في دليل المصدر للبناء مع Iresearch
إذا قامت تجميع IRESearch باستخدام/MT Add_definitions ("/mtd") إلى نهاية cmake_unofficial/cmakelists.txt لأن cmake سوف يتجاهل وسيطة سطر الأوامر -dcmake_c_flags =/mtd
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX= < install-path > -DBUILD_STATIC_LIBS=on -g " Visual studio 17 " -Ax64 ../contrib/cmake_unofficial
cmake --build .
cmake --build . --target installأو نقطة lz4_root في دليل المصدر للبناء مع Iresearch
LZ4_ROOT= < install-path >ثنائيات Win32 متوفرة أيضًا في:
V53 أو أعلى
./configure --disable-samples --disable-tests --enable-static --srcdir= " $( pwd ) " --prefix= < install-path > --exec-prefix= < install-path >
make installأو نقطة icu_root في دليل المصدر للبناء مع Iresearch أو عبر مدير حزمة التوزيعات: libicu
ابحث عن الرابط: "ثنائيات ICU4C"
ICU_ROOT= < path-to-icu >يهدف cmakelists.txt المخصصة إلى استخدامها مع Snowball v2.0.0 والإصدارات الأحدث. على الأقل تم اختباره للعمل على الالتزام 53739A805CFA6C77FF8496DC711DC1C106D987C1
git clone https://github.com/snowballstem/snowball.git
mkdir build && cd build
cmake -DENABLE_STATIC=OFF -DNO_SHARED=OFF -g " Unix Makefiles " ..
cmake --build .
cmake -DENABLE_STATIC=OFF -DNO_SHARED=ON -g " Unix Makefiles " ..
cmake --build .أو Point Snowball_root في دليل المصدر للبناء مع Iresearch أو عبر مدير حزمة التوزيعات: libstemmer
استند cmakelists.txt المخصص إلى المراجعة 5137019D68BEFD633CE8B1CD48065F41E77ED43E يمكن استخدام الإصدارات اللاحقة في خطر فشلك في التجميع
git clone https://github.com/snowballstem/snowball.git
git reset --hard adc028f3ae646623bda2f99191fe9dc3287a909b
mkdir build && cd build
set PATH=%PATH% ; < path-to > /build/Debug
cmake -DENABLE_STATIC=OFF -DNO_SHARED=OFF -g " Visual studio 12 " -Ax64 ..
cmake --build .
cmake -DENABLE_STATIC=OFF -DNO_SHARED=ON -g " Visual studio 12 " -Ax64 ..
cmake --build .أو Point Snowball_root في دليل المصدر للبناء مع Iresearch
للبناء الثابت:
- في MSVC Open: Build/Snowball.sln
- المجموعة: STEMMER -> خصائص -> خصائص التكوين -> C /C ++ -> توليد الكود -> مكتبة وقت التشغيل = /mtd
- Build -> Build Solution
SNOWBALL_ROOT= < path-to-snowball >Point VPACK_ROOT في دليل المصدر للبناء مع IRESEARCH
mkdir build && cd build
cmake ..
makeأو نقطة gtest_root في دليل المصدر للبناء مع Iresearch
mkdir build && cd build
cmake -g " Visual studio 12 " -Ax64 -Dgtest_force_shared_crt=ON -DCMAKE_DEBUG_POSTFIX= " " ..
cmake --build .
mv Debug ../libأو نقطة gtest_root في دليل المصدر للبناء مع Iresearch
GTEST_ROOT= < path-to-gtest >قم بتنزيل أي عدد من قوائم Stopwords ، على سبيل المثال من: https://github.com/snowballstem/snowball-website/tree/master/algorithms/*/stop.txt https://code.google.com/p/stop-words/
IRESEARCH_TEXT_STOPWORD_PATH= < path-to-stopword-lists >إذا تم ترك المتغير IRESEARCH_TEXT_STOPWORD_PATH غير مستقر ، فسيتم اعتبار تحديد موقع محدد محدد لوقف الكلمات في دليل العمل الحالي
git clone < IResearch code repository > /iresearch.git iresearch
cd iresearch
mkdir build && cd buildإنشاء ملف إنشاء <*nix>:
cmake -DCMAKE_BUILD_TYPE=[Debug | Release | Coverage] -g " Unix Makefiles " ..
- إذا لم يتم العثور على بعض المكتبات بواسطة البناء ، فقم بتعيين المتغيرات المطلوبة> المتغيرات (على سبيل المثال boost_root ، BOOST_LIBRARYDIR ، LZ4_ROOT ، OPENFST_ROOT ، GTEST_ROOT)
- إذا لم يتم العثور على وحدة العناية المركزة أو كرة الثلج من مسارات التوزيع ، فقد تكون هناك حاجة إلى متغيرات البيئة الإضافية التالية:> icu_root_suffix = x86_64-linux-gnu snowball_root_suffix = x86_64-linux-gnu
إنشاء ملف بناء (Win32):
cmake -g " Visual studio 12 " -Ax64 ..إذا لم يتم العثور على بعض المكتبات بواسطة البناء ، فقم بتعيين متغيرات البيئة المطلوبة (على سبيل المثال boost_root ، BOOST_LIBRARYDIR ، LZ4_ROOT ، OPENFST_ROOT ، GTEST_ROOT)
تعيين معرف بناء لهذا البناء (اختياري)
echo " <build_identifier> " > BUILD_IDENTIFIERبناء المكتبة:
cmake --build .مكتبة الاختبار:
cmake --build . --target iresearch-checkتثبيت المكتبة:
cmake --build . --target installتغطية الكود:
cmake --build . --target iresearch-coverageهناك غلاف Python لـ Iresearch. يمنح Wrapper إمكانية الوصول إلى كائن قارئ الدليل. للحصول على مثال الاستخدام ، انظر /python /scripts
يجب أن يكون إنشاء مولد SWISERESS Pyresearch متاحًا. إضافة -duse_pypresearch = تشغيل سطر الأوامر cmake لإنشاء أهداف pyresearch
تشغيل الهدف Pyresearch-Install
يبدو أن بعضًا من أجهزة تثبيت وحدة العناية المركزة تفشل في إتاحة جميع DLLs ICU من خلال متغير Enviroment Path ، قد تكون هناك حاجة إلى تعديل يدوي.
يتم استخدام النسخة المشتركة من Libiresearch. تثبيت Iresearch قبل تشغيل Pyresearch.
يجب إتاحة تبعيات الطرف الثالث الخارجي لمكتبة Iresearch بشكل منفصل. قد يتم تثبيتها إما من خلال نظام إدارة حزم التوزيع أو البناء من المصدر ومتغيرات البيئة المناسبة المحددة وفقًا لذلك.
v1.57.0 أو الأحدث (مؤشر ترابط النظام المحلي) المستخدم في الوظائف غير متوفرة في STL (باستثناء الوظائف المتاحة في وحدة العناية المركزة)
تستخدم لضغط/فك ضغط بيانات البايت/السلسلة
تستخدمها المحللون لتحليل بيانات السلسلة وتحويلها ورمزها
تستخدمها المحللون لسيقان الكلمات الحاسوبية (أي جذور) لمطابقة أكثر مرونة للمطابقة للكلمات من اللغات التي لا تدعمها "Snowball" يتم حرفيها حرفيًا
تستخدم لكتابة اختبارات مكتبة Iresearch
تستخدم لسلسلة JSON/إزالة التسلسل
يستخدمه التحليل :: text_analyzer لتصفية كلمات الضوضاء التي لا ينبغي أن تؤثر على النص الذي يتراوح من أجل "en" هذه المعتادة "A" ، "،" ، إلخ ... قم بتنزيل أي عدد من قوائم Stopwords ، Eg من: https://github.com/snowballstem/snowball-webebsite/tremy https://code.google.com/p/stop-words/ أو قم بإنشاء قائمة مخصصة خاصة باللغة من الكلمات المتوقفة تضع الملفات مع كلمات توقف ، (يتم ترميز UTF8 مع كلمة واحدة لكل سطر ، سيتم تفسير أي نص بعد أن يتم تجاهل المساحة البيضاء الأولى) ، في الدليل المطابق للغة (ملفات متعددة لكل لغة مدعومة وسيتم تفسيرها على أنها قائمة واحدة)
| فلتر | وصف |
|---|---|
| IRS :: by_edit_distance | لتصفية القيم بناءً على مسافة Levenshtein |
| IRS :: by_granular_range | لتصفية أسرع للقيم الرقمية ضمن نطاق معين ، مع إمكانية تحديد نطاقات مفتوحة/مغلقة |
| IRS :: by_ngram_similarity | لتصفية القيم على أساس نموذج NGRAM |
| IRS :: by_phrase | لتصفية القيم الحساسة للمواقع ، مع إمكانية تخطي المواقف المحددة |
| IRS :: by_prefix | لتصفية بادئات القيمة الدقيقة |
| IRS :: by_range | لتصفية القيم ضمن نطاق معين ، مع إمكانية تحديد نطاقات مفتوحة/مغلقة |
| IRS :: by_same_position | للترشيح الحساس لترتيب المصطلح للقيم الدقيقة |
| مصلحة الضرائب :: by_term | لتصفية القيم الدقيقة |
| مصلحة الضرائب :: by_terms | لتصفية القيم الدقيقة من خلال مجموعة من المصطلحات المحددة |
| مصلحة الضرائب :: by_wildcard | لتصفية القيم على أساس نمط المطابقة |
| مصلحة الضرائب :: bynestedfilter | لتصفية المستندات بناءً على نمط المطابقة على الحجج الفرعية لها |
| مصلحة الضرائب :: و | التواصل المنطقي للمرشحات المتعددة ، مما يؤثر على صفوف/درجات الوثائق حسب الاقتضاء |
| مصلحة الضرائب :: أو | انفصال منطقي للمرشحات المتعددة ، التأثير على صفوف/درجات المستندات حسب الاقتضاء (بما في ذلك وظائف "المطابقة الدنيا") |
| مصلحة الضرائب :: لا | نفي منطقي لمرشحات متعددة |
حقوق الطبع والنشر (C) 2017-2023 Arangodb GmbH
حقوق الطبع والنشر (C) 2016-2017 EMC Corporation
يتم توفير هذا البرنامج ضمن ترخيص برنامج Apache 2.0 المقدم في ملف الترخيص. يمكن العثور على معلومات الترخيص لمنتجات الطرف الثالث المستخدمة من قبل محرك البحث في IRESEARK في Third_Party_Readme.MD