Thursday, September 8, 2016

الحد كود





+

الأحد 27 أبريل، 2014 التعبير مع لوسين تعبيرات وحدة لوسين يسمح القيم الحوسبة عن الوثائق باستخدام التعبيرات الرياضية التعسفية. من بين أمور أخرى، وتعبيرات تسمح وسيلة سهلة للغاية وقوية لمثل ترتيب النتائج والنحت الجغرافية المكانية البحث. وحدة بتوزيع تعبيرات سلسلة في تدوين جافا سكريبت، وتقوم بإرجاع كائن الذي يحسب قيمة كل وثيقة طلب. يتم بناؤها عبارات حرفية. المتغيرات والوظائف. على سبيل المثال، في التعبير 5 * الجذر التربيعي (الأصوات). 5 هو الحرفي، الجذر التربيعي هو وظيفة والأصوات هي متغير. محلل جافا سكريبت يعترف حفنة من الوظائف المفيدة. مثل كحد أقصى. دقيقة. الجذر التربيعي وما إلى ذلك javadocs تحتوي على قائمة كاملة من وظائف وكذلك الشركات التي يعترف المحلل. يتم حل المتغيرات عن طريق ربط اسمهم إلى ValueSource. على سبيل المثال، من أجل تحليل وتنفيذ التعبير أعلاه، تحتاج إلى كتابة التعليمات البرمجية مشابهة لهذه: لا بد للمتغير الأصوات إلى رقمية الميدان "الأصوات" (عادة، وNumericDocValuesField). SimpleBindings تمكنك من ربط المتغير إلى SortField. ولكن في الداخل كان منضما إلى ValueSource. التعبير نفسه بإرجاع ValueSource. وعندما يسأل طلبك للحصول على قيمة وثيقة، فإنه يحسب أنه استنادا إلى الصيغة وValueSource المتغيرات يحدها الصورة. تعبيرات تخصيص JavascriptCompiler يتيح لك تمرير تعيين وظائف مخصصة، حيث يتم تنفيذ كل وظيفة من قبل الطريقة العامة وثابتة. الذي يستغرق فترة تصل إلى 256 معلمات مزدوجة وإرجاع مزدوج. يمكنك ان ترى مثالا جيدا هنا. التي، جنبا إلى جنب مع المتغيرات. يوفر قدرات كبيرة التخصيص من التعبيرات. تخصيص أحيانا تعبيرات ليس بالأمر اليسير. على سبيل المثال، سأل أحدهم مؤخرا على لوسين المستخدم قائمة كيفية استخدام حقل متعدد القيم في التعبير. لغرض حساب وظائف مختلفة على ذلك (كحد أقصى. خلاصة القول وما إلى ذلك). في البداية، يبدو وكأنه وظيفة مخصصة، على سبيل المثال MAXALL () (بحد أقصى () مأخوذ بالفعل)، والتي يمكن أن تكون جزءا لا يتجزأ في تعبير مثل 5 * maxVal (البيانات). ومع ذلك، منذ البيانات هو متغير، والمتغيرات ملزمة لValueSource الصورة (التي ترجع قيمة واحدة لمستند)، ونحن لا يمكن تمرير جميع قيم البيانات إلى MAXALL (). يمكننا تنفيذ ValueSource الرغم من ذلك، والتي ترجع القيمة القصوى من البيانات الميدانية. وربط max. data متغير إليها. منذ هذه ليست وظيفة حقيقية. لا يمكننا استخدام التدوين أكثر طبيعية مثل ماكس (البيانات). ربما في يوم من الأيام لوسين لديها المدمج في دعم لحقول متعددة القيم الرقمية، وسوف حدة تعبيرات لصناعة السيارات في الكشف عن مثل هذه المجالات، وتمرير جميع القيم إلى وظيفة (وكنت موضع ترحيب للمساهمة بقع!). حتى ذلك الحين رغم ذلك، كنت بحاجة إلى تنفيذ ValueSource لكل هذه الوظيفة، لكن لحسن الحظ أنها تافهة جدا. كتبت بعض رمز النموذج أدناه والذي يوضح كيفية القيام بذلك. أولا، لمؤشر حقل رقمي متعدد القيم، يمكنك استخدام BinaryDocValues ​​بواسطة ترميز إلى قائمة الأرقام إلى [] بايت. المؤشرات البرمجية التالية خمس وثائق مع ثنائي القيم ثيقة الحقل الذي يشفر بعض الأعداد الصحيحة باستخدام متغير طول الترميز. المقبل، ونحن بحاجة لكتابة MaxValuesSource الذي يقرأ من ثنائي القيم ثيقة الميدانية وإرجاع القيمة القصوى. منهجه getValues ​​يبدو مثل هذا: منذ SimpleBindings لا يسمح المتغيرات ملزمة لتعسفيا ValueSource الصورة، يمكننا إرسال تمديد الربط الخاصة بنا. للبساطة، وأنا ملفوفة مثيل SimpleBindings لجميع SortField الصورة، ولكن تلك المخصصة: وأخيرا، لاستخدام كل منهم في تعبير يجب أن نكتب هذا الكود: تعبيرات متداخلة لنفترض أن المستندات الخاصة بك تحتوي على خطوط الطول والعرض الحقول وتريد استخدامها لحساب ذات صلة وثيقة، وعن طريق حساب الصيغة haversine. يمكنك القيام بذلك بسهولة عن طريق تجميع تعبير مثل haversin (40.7143528، -74.0059731، خطوط الطول والعرض). الآن، ما إذا كنت تريد استخدام نتيجة لهذا التعبير في تعبير آخر، مثل _score + 1 / (1 + haversin (40.7143528، -74.0059731، خطوط الطول والعرض)). ويبدأ لتصبح طويل قليلا الى حد ما يقرأ. لن يكون من الأفضل لو أننا يمكن أن تغلف في متغير المسافة وقراءة _score التعبير + 1 / (1 + المسافة) بدلا من ذلك؟ لحسن الحظ، يمكننا القيام بذلك بسهولة مع المتداخلة تعبيرات / جنوب: منذ متغير يمكن ربط أي ValueSource. والعبارات هي في الواقع ValueSource الصورة، يمكننا ربط نتيجة تعبير إلى متغير في تعبير آخر. تعبيرات متداخلة أيضا مؤقتا نتائجها في حال كنت استخدامها على سبيل المثال في جمل متعددة للتعبير آخر. هذا يمكن أن يكون مفيدا إذا كان لديك التعبير مكلفة جدا، الذي يحتاج الى تقييم عدة مرات في الوثيقة. وحدة تعبيرات قوية جدا وتتيح لك رمز الصيغ الترتيب مخصص / الفرز / النحت بسهولة. مع وظائف مخصصة. المتغيرات وValueSource الصورة، فإنه يجعل من تافهة لتوسيع وبناء عليه إلى أبعد من ذلك. إذا قمت بتطبيق وظائف مفيدة. كنت موضع ترحيب للمساهمة لهم!




No comments:

Post a Comment