प्रौद्योगिकी साझेदारी

Elasticsearch कस्टम् स्कोरिंग् तथा स्क्रिप्टेड् स्कोरिंग्

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Elasticsearch इत्यस्मिन् पूर्वनिर्धारितं स्कोरिंग् तन्त्रं (यथा BM25 एल्गोरिदम्) अधिकांशप्रसङ्गेषु उत्तमं अन्वेषणपरिणामक्रमाङ्कनं दातुं शक्नोति । तथापि केषुचित् विशिष्टेषु परिदृश्येषु अस्माकं व्यावसायिकआवश्यकतानां आधारेण अन्वेषणपरिणामानां अधिकं परिष्कृतं क्रमणं कर्तुं आवश्यकता भवितुम् अर्हति । अस्मिन् समये Elasticsearch एतासां जटिलानाम् आवश्यकतानां पूर्तये कस्टम् स्कोरिंग् (Function Score Query) तथा स्क्रिप्ट् स्कोरिंग् (Script Score) फंक्शन्स् प्रदाति । अस्मिन् लेखे Elasticsearch इत्यस्मिन् स्कोरिंग्, स्क्रिप्ट् स्कोरिंग् च कथं अनुकूलितं कर्तव्यमिति विस्तरेण वर्णितं भविष्यति ।

1. अनुकूलितं स्कोरिंग् (Function Score Query) 1.1.

१.१ परिभाषा सिद्धान्तः च

कस्टम् स्कोरिंग् इत्यनेन पूर्वनिर्धारितकार्यस्य समुच्चयस्य आधारेण प्रत्येकस्य दस्तावेजस्य पूर्वनिर्धारितं स्कोरं परिवर्तयितुं शक्यते । एते कार्याणि दस्तावेजस्य क्षेत्रमूल्यानां, प्रश्नमापदण्डानां, अन्यकारकाणां वा आधारेण नूतनानां रेटिंग्-गणनां कर्तुं शक्नुवन्ति । अन्ततः, Elasticsearch अन्वेषणपरिणामानां श्रेणीनिर्धारणाय मूलस्कोरं कस्टम् स्कोरेन सह संयोजयिष्यति ।

१.२ सामान्यतया प्रयुक्तानि कार्याणि

Elasticsearch कस्टम् स्कोरिंग् कृते विविधानि अन्तःनिर्मितकार्यं प्रदाति, यत्र सन्ति किन्तु एतेषु एव सीमिताः न सन्ति:

  • भारः: सर्वेभ्यः मेलकर्ताभ्यः दस्तावेजेभ्यः एकरूपं भारं नियुक्तं कुर्वन्तु।
  • क्षेत्र_मूल्य_कारक: दस्तावेजे क्षेत्रमूल्यानां आधारेण रेटिंग् गणयन्तु।
  • यादृच्छिक_अङ्क: दस्तावेजस्य कृते यादृच्छिकं स्कोरं जनयन्तु।
  • क्षय_कार्यम्: दस्तावेजस्य तथा कस्यचित् बिन्दुस्य (यथा भौगोलिकस्थानं, समयः इत्यादिषु) मध्ये दूरस्य आधारेण क्षयस्कोरस्य गणनां कुर्वन्तु सामान्यक्षयकार्यं गाउसीयन (gauss), रेखीय (रेखीय), घातीय (exp) इत्यादयः सन्ति
  • स्क्रिप्ट_स्कोर: रेटिंग् गणयितुं कस्टम् स्क्रिप्ट् उपयुज्यताम् ।

१.३ उदाहरणम्

मानातु अस्माकं ई-वाणिज्यजालस्थलं अस्ति, उपयोक्तारः उत्पादानाम् अन्वेषणकाले उत्पादमूल्यं रेटिंग् च विचारयितुम् इच्छन्ति ।वयं उपयोक्तुं शक्नुमःfunction_scoreएतां आवश्यकतां प्राप्तुं प्रश्नः : १.

GET /products/_search
{
  "query": {
    "function_score": {
      "query": {
        "match": {
          "name": "手机"
        }
      },
      "functions": [
        {
          "field_value_factor": {
            "field": "price",
            "modifier": "reciprocal",
            "params": {
              "scale": 100
            }
          }
        },
        {
          "field_value_factor": {
            "field": "rating",
            "missing": 1.0
          }
        }
      ],
      "score_mode": "sum",
      "boost_mode": "replace"
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

अस्मिन् उदाहरणे वयं प्रयुञ्ज्महेfield_value_factor फंक्शन् द्रव्यस्य मूल्यस्य रेटिंग् च आधारेण कस्टम् रेटिंग् गणयति । मूल्येषु परस्परक्षयस्य उपयोगः भवति (reciprocal ), येन न्यूनमूल्येन उत्पादस्य अधिकः स्कोरः भवति; अन्ते वयं द्वयोः कार्ययोः रेटिंग् योजयित्वा मूलरेटिङ्ग्स् प्रतिस्थापयामः ।

2. स्क्रिप्ट स्कोर

२.१ परिभाषा सिद्धान्तः च

स्क्रिप्ट् स्कोरिंग् इत्यनेन दस्तावेजस्य स्कोरिंग् गणयितुं कस्टम् स्क्रिप्टिङ्ग् भाषा (यथा Painless) उपयोक्तुं शक्यते । एषः उपायः सर्वाधिकं लचीलतां ददाति, प्रायः कस्यापि तर्कस्य आधारेण स्कोरस्य गणनां कर्तुं शक्नोति च ।

२.२ उदाहरणम्

मानातु यत् वयं उत्पादस्य इन्वेण्ट्री-मात्रायाः आधारेण रेटिंग् समायोजितुं इच्छामः न्यून-इन्वेण्ट्री-युक्तानां उत्पादानाम् रेटिंग् अधिकानि भविष्यन्ति ।वयं उपयोक्तुं शक्नुमःscript_scoreएतां आवश्यकतां प्राप्तुं कार्यम् : १.

GET /products/_search
{
  "query": {
    "function_score": {
      "query": {
        "match": {
          "name": "手机"
        }
      },
      "functions": [
        {
          "script_score": {
            "script": {
              "source": "Math.max(0, 1 - doc['stock'].value / 100.0)",
              "lang": "painless"
            }
          }
        }
      ],
      "score_mode": "multiply",
      "boost_mode": "replace"
    }
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

अस्मिन् उदाहरणे वयं रेटिंग् गणयितुं Painless स्क्रिप्टिङ्ग् भाषायाः उपयोगं कुर्मः । स्क्रिप्ट् उत्पादस्य इन्वेण्ट्री परिमाणं निर्धारयति (doc['stock'].value ) एकं स्कोरं गणयति। ततः वयं अन्वेषणपरिणामानां अन्तिमक्रमाङ्कनं समायोजयितुं मूलरेटिंग् इत्यनेन सह एतत् स्कोरं गुणयामः ।

3. सारांशः

कस्टम् स्कोरिंग्, स्क्रिप्ट् स्कोरिंग् च Elasticsearch द्वारा प्रदत्ताः शक्तिशालिनः विशेषताः सन्ति, ये अस्मान् व्यावसायिक-आवश्यकतानां आधारेण अन्वेषण-परिणामान् परिष्कृत्य स्थापयितुं शक्नुवन्ति । एतेषां कार्याणां तर्कसंगतरूपेण उपयोगेन वयं उपयोक्तृ-अनुभवं सुधारयितुम् उपयोक्तृणां विविधान् आवश्यकतान् पूर्तयितुं च शक्नुमः । परन्तु एतत् ज्ञातव्यं यत् कस्टम् स्कोरिंग् तथा स्क्रिप्ट् स्कोरिंग् इत्यनेन प्रश्नस्य जटिलतां गणनाव्ययस्य च वृद्धिः भवितुम् अर्हति, अतः व्यावहारिक-अनुप्रयोगेषु पक्ष-विपक्षयोः तौलनं कृत्वा सावधानीपूर्वकं उपयोगः करणीयः