تم تنفيذ لغة البحث الكاملة للشرف الكامل للمتجر الكامل لـ Java 8+
يعد البحث الكامل للنص ميزة رئيسية للتطبيقات الحديثة. ومع ذلك ، تعرض مخازن البيانات المختلفة بناء جملة مختلف لأداء البحث عن النص الكامل ، والعديد من هذه الجملة ليست سهلة الاستخدام. بعض مخازن البيانات لا تعرض أي ميزات بحث كاملة عن النص على الإطلاق! هذا يجعل من الصعب على المطورين فضح تجربة بحث متسقة تواجه المستخدم. Litecene هي لغة استعلام قياسية مألوفة تستند إلى بناء جملة Lucene مع أجهزة إرسال إلى متاجر البيانات الشهيرة مثل BigQuery التي تجعل من السهل على المطورين فضح بناء جملة بحث متسقة وسهلة الاستخدام للمستخدمين مع الاستفادة القصوى من ميزات البحث الكاملة لخزن بياناتها.
يصف هذا القسم بناء جملة الاستعلام الشائع Litecene. لاحظ أن أجهزة الاستقبال المختلفة قد تنفذ البحث عن النص عن نفس الاستعلام بشكل مختلف. يصف هذا القسم مجرد ما يشكل استعلامًا صالحًا والتعريف المنطقي للمباراة ؛ يقوم كل مستندات تنفيذ Transpiler بالضبط بمطابقة الاستعلامات الصحيحة في متجر البيانات المرتبط.
على سبيل المثال ، قد يكون هذا استعلامًا جيدًا لتحديد منشورات وسائل التواصل الاجتماعي التي تذكر الطرق الشائعة للأشخاص هواتفهم الذكية:
(smartphone OR "smart phone" OR iphone OR "apple phone" OR android OR "google phone" OR "windows phone" OR "phone app"~8) AND (call OR dial OR app OR surf OR browse OR camera OR picture OR pic OR selfie)
يدعم Litecene سبعة أنواع شرط البحث: المصطلح ، العبارة ، القائمة ، المجموعات ، و ، وليس.
شرط مصطلح هو سلسلة غير مؤهلة من الأحرف غير المتسابقين. يجب أن يحتوي المستند المطابق على المصطلح المحدد. فيما يلي كل جمل صالحة مصطلح Litecene:
helloworldwhat's#selfie@twitterhttps://www.example.com/this/is/a/hyperlink قد ينتهي شرط المصطلح أيضًا بحرف Wildcard ( * ) للإشارة إلى بحث بادئة. في هذه الحالة ، يجب أن يحتوي المستند المطابق على مصطلح به البادئة المحددة. فيما يلي جميعها جمل بادئة Prefix Prefix صالحة:
developer*what's*https://www.example.com/*جملة جملة هي سلسلة مقتبسة من الأحرف. يجب أن يحتوي المستند المطابق على المصطلحات المحددة بجانب بعضها البعض. فيما يلي كل جمل من عبارة Litecene Prase:
"hello, world!""The rain in Spain falls mainly on the plains.""super cool search" يمكن أن ينتهي المصطلح في جملة جملة مع بطاقة Wildcard ( * ) للإشارة إلى بحث بادئة. في هذه الحالة ، يجب أن يحتوي المستند المطابق على الشروط المحددة مع البادئات المحددة بجانب بعضها البعض. فيما يلي كل جمل من عبارة Litecene Prase مع شروط Wildcard:
"It wa* the best of times""It was the wors* of times" يمكن اتباع شرط العبارات على الفور بواسطة tilde ( ~ ) ورقم عدد صحيح للإشارة إلى البحث عن القرب. في هذه الحالة ، يجب أن يحتوي المستند المطابق على جميع الشروط العادية أو البادئة المحددة ضمن عدد مصطلحات بعضها البعض بأي ترتيب. يجب أن يكون طول القرب على الأقل عدد المصطلحات في العبارة. فيما يلي فقرات عبارة Litecene سارية القرب:
"hello, world!"~8"It wa* the best of times"~10شرط القائمة هو اثنين أو أكثر من شروط بحث Litecene صالحة مفصولة بمساحة بيضاء. يجب أن تتطابق المستند المطابق مع الجمل المعطاة بأي ترتيب. فيما يلي كل جمل من عبارة Litecene Prase:
hello, world!The rain in Spain falls mainly on the plains.engineer* "developer* productivity"~8 شرط المجموعة هو أي شرط بحث صالح آخر صالح محاطين بالأقواس ( ) . يجب أن يتطابق وثيقة مطابقة للفقرة الموجودة. فيما يلي كل جمل سارية المفعول:
(hello world)(engineer* "developer* productivity"~10)تستخدم الجمل الجماعية في الغالب لتوضيح الاستعلامات المعقدة التي تحتوي على جمل متعددة و / أو.
AN و "و" بند لليتيسين صالح تليها الكلمة الرئيسية AND شرط بحث Litecene آخر. يمكن إلحاق الجمل المتعددة AND بنفسها. يجب أن تتطابق وثيقة مطابقة مع جميع الجمل المعطاة. فيما يلي كلها صالحة للليتيسين والبنود:
hello AND worldThe rain in Spain falls mainly on the plains AND "My Fair Lady"~8engineer* AND "developer productivity"~10 شرط أو جملة عبارة عن بند بحث صالح يتبعه الكلمة الرئيسية OR متبوعًا بند شرط آخر لبحث Litecene. يمكن إلحاق الجمل المتعددة OR الجمل على نفس أو بند. متى و / و / أو الجمل متشابكة ، ويرتبط AND أكثر إحكاما. يمكن استخدام شرط المجموعة لجعل الاستعلام أكثر وضوحًا وأسهل للفهم. يجب أن تتطابق وثيقة مطابقة على واحدة على الأقل من الجمل المعطاة. فيما يلي جميعها صالحة أو بنود:
hello OR world"My Fair Lady"~8 OR Pygmalion شرط لا هو الكلمة الرئيسية التي NOT تليها بند بحث آخر في Litecene. يجب ألا يتطابق المستند المطابق للفقرة المحددة. فيما يلي كلها Litcene غير صالحة وليس بنود:
NOT helloNOT "hello, world!"NOT (engineer* AND "developer productivity"~10) لا تسمح بعض الاستعلام الخلفية بإجراء استعلام لا يحتوي إلا NOT الجمل.
للحصول على أمثلة حول كيفية استخدام Litecene في التطبيق الخاص بك ، راجع README لمتجر بيانات التطبيق الخاص بك.
يحتوي تكامل مخزن البيانات الجديد على جزأين: جهاز نقل الاستعلام الذي يحول كائن Query Litecene إلى بناء الجملة الأصلي لمخزن البيانات ؛ وطريقة لإعداد النص في متجر البيانات للبحث. يجب أن يعمل هذان المكونان معًا لتنفيذ دلالات البحث الصحيحة.
على سبيل المثال ، يبحث تكامل مخزن بيانات BigQuery فقط عن الحروف والأرقام اللاتينية ASCII. لذلك ، يجب معالجة الاستعلام بعد معالجته للتعامل مع الأحرف غير البحث بشكل مناسب قبل أن يتم تحويله إلى مسند SQL ، ويجب معالجة البيانات الموجودة في متجر البيانات مسبقًا للتخلص من الأحرف غير البحث ، ويجب أن يتم معالجتها بحيث تتفق مع بعضها البعض.
يجب أن تنفذ الواجهة الخلفية لتكامل البيانات الجديدة لإنشاء خط أنابيب لتحليل الاستعلام المقترح ونهج مقترح للمعالجة المسبقة للبيانات.
يقوم Litecene بتنفيذ خطوط الأنابيب التالية للسماح لمطوري تكامل متجر البيانات ببناء قواعد معالجة معقدة بسرعة وسهولة.
يعرض Litecene جميع نص الاستعلام كتسلسل من نقاط الكود. CodePointStream هو تسلسل مرتبة من نقاط الكود. يحتوي Litecene Core على مرشحات نقطة الكود التالية:
SmartQuotesCodePointFilter - يحول "اقتباسات ذكية" إلى "اقتباسات مستقيمة"يمكن لمرشحات نقطة الرمز تعيين نقطة رمز إلى آخر ، ولكن لا يمكن إضافة أو إزالة نقاط الرمز.
يستخدم Litecene الرمز المميز لتحويل نقاط الرمز إلى رموز. TokenStream هو تسلسل مرتبة من الرموز. يحتوي Litecene Core على المرشحات الرمزية التالية:
LetterNumberTokenFilter يحل محل جميع الشخصيات غير الرقمية مع المسافة البيضاء. يتم استخدام خطاب فئة Unicode والرقم لتحديد النص الأبجدي الرقمي.LowercaseTokenFilter - يحول جميع النص إلى أحرف صغيرة.NormalizeTokenFilter - يقوم بتطبيع Unicode NFKD على النص ويزيل جميع أحرف علامة Unicode.PrintableAsciiTokenFilter يحل محل جميع الأحرف في 0x20-0x7E مع مساحة البيضاء.يمكن أن تقوم المرشحات الرمزية بإجراء تغييرات تعسفية على النص الرمز المميز ، ولكن لا يمكن إضافة أو إزالة الرموز.
يسمح Litecene بتحولات الاستعلام التعسفي باستخدام QueryPipeline . يحتوي Litecene Core على خطوط أنابيب الاستعلام التالية:
SimplifyQueryFilterPipeline - إعادة هيكلة استعلام لإزالة المصطلحات "الفاشلة" (على سبيل المثال ، المصطلحات بدون نص) وتبسيط المنطق (على سبيل المثال ، دمج مجاورة والاستعلامات) خريطة طريق Litecene متوفرة دائمًا هنا. لا تتردد في فتح القضايا أو التعليق عليها إذا كان لديك ملاحظات!