2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Elasticsearch इत्यस्मिन् पूर्वनिर्धारितं स्कोरिंग् तन्त्रं (यथा BM25 एल्गोरिदम्) अधिकांशप्रसङ्गेषु उत्तमं अन्वेषणपरिणामक्रमाङ्कनं दातुं शक्नोति । तथापि केषुचित् विशिष्टेषु परिदृश्येषु अस्माकं व्यावसायिकआवश्यकतानां आधारेण अन्वेषणपरिणामानां अधिकं परिष्कृतं क्रमणं कर्तुं आवश्यकता भवितुम् अर्हति । अस्मिन् समये Elasticsearch एतासां जटिलानाम् आवश्यकतानां पूर्तये कस्टम् स्कोरिंग् (Function Score Query) तथा स्क्रिप्ट् स्कोरिंग् (Script Score) फंक्शन्स् प्रदाति । अस्मिन् लेखे Elasticsearch इत्यस्मिन् स्कोरिंग्, स्क्रिप्ट् स्कोरिंग् च कथं अनुकूलितं कर्तव्यमिति विस्तरेण वर्णितं भविष्यति ।
कस्टम् स्कोरिंग् इत्यनेन पूर्वनिर्धारितकार्यस्य समुच्चयस्य आधारेण प्रत्येकस्य दस्तावेजस्य पूर्वनिर्धारितं स्कोरं परिवर्तयितुं शक्यते । एते कार्याणि दस्तावेजस्य क्षेत्रमूल्यानां, प्रश्नमापदण्डानां, अन्यकारकाणां वा आधारेण नूतनानां रेटिंग्-गणनां कर्तुं शक्नुवन्ति । अन्ततः, Elasticsearch अन्वेषणपरिणामानां श्रेणीनिर्धारणाय मूलस्कोरं कस्टम् स्कोरेन सह संयोजयिष्यति ।
Elasticsearch कस्टम् स्कोरिंग् कृते विविधानि अन्तःनिर्मितकार्यं प्रदाति, यत्र सन्ति किन्तु एतेषु एव सीमिताः न सन्ति:
मानातु अस्माकं ई-वाणिज्यजालस्थलं अस्ति, उपयोक्तारः उत्पादानाम् अन्वेषणकाले उत्पादमूल्यं रेटिंग् च विचारयितुम् इच्छन्ति ।वयं उपयोक्तुं शक्नुमः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"
}
}
}
अस्मिन् उदाहरणे वयं प्रयुञ्ज्महेfield_value_factor
फंक्शन् द्रव्यस्य मूल्यस्य रेटिंग् च आधारेण कस्टम् रेटिंग् गणयति । मूल्येषु परस्परक्षयस्य उपयोगः भवति (reciprocal
), येन न्यूनमूल्येन उत्पादस्य अधिकः स्कोरः भवति; अन्ते वयं द्वयोः कार्ययोः रेटिंग् योजयित्वा मूलरेटिङ्ग्स् प्रतिस्थापयामः ।
स्क्रिप्ट् स्कोरिंग् इत्यनेन दस्तावेजस्य स्कोरिंग् गणयितुं कस्टम् स्क्रिप्टिङ्ग् भाषा (यथा 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"
}
}
}
अस्मिन् उदाहरणे वयं रेटिंग् गणयितुं Painless स्क्रिप्टिङ्ग् भाषायाः उपयोगं कुर्मः । स्क्रिप्ट् उत्पादस्य इन्वेण्ट्री परिमाणं निर्धारयति (doc['stock'].value
) एकं स्कोरं गणयति। ततः वयं अन्वेषणपरिणामानां अन्तिमक्रमाङ्कनं समायोजयितुं मूलरेटिंग् इत्यनेन सह एतत् स्कोरं गुणयामः ।
कस्टम् स्कोरिंग्, स्क्रिप्ट् स्कोरिंग् च Elasticsearch द्वारा प्रदत्ताः शक्तिशालिनः विशेषताः सन्ति, ये अस्मान् व्यावसायिक-आवश्यकतानां आधारेण अन्वेषण-परिणामान् परिष्कृत्य स्थापयितुं शक्नुवन्ति । एतेषां कार्याणां तर्कसंगतरूपेण उपयोगेन वयं उपयोक्तृ-अनुभवं सुधारयितुम् उपयोक्तृणां विविधान् आवश्यकतान् पूर्तयितुं च शक्नुमः । परन्तु एतत् ज्ञातव्यं यत् कस्टम् स्कोरिंग् तथा स्क्रिप्ट् स्कोरिंग् इत्यनेन प्रश्नस्य जटिलतां गणनाव्ययस्य च वृद्धिः भवितुम् अर्हति, अतः व्यावहारिक-अनुप्रयोगेषु पक्ष-विपक्षयोः तौलनं कृत्वा सावधानीपूर्वकं उपयोगः करणीयः