အကြီးစားဝက်ဘ်လျှောက်လွှာများကိုတည်ဆောက်ရာတွင်ရှာဖွေရေးလုပ်ဆောင်ချက်သည်မကြာခဏမရှိမဖြစ်လိုအပ်သော core module တစ်ခုဖြစ်သည်။ စွမ်းဆောင်ရည်မြင့်မားစွာဖြန့်ဖြူးသောရှာဖွေရေးအင်ဂျင်အနေဖြင့် Elppp developer များကို PHP developer များကိုအားကောင်းသည့်အချက်အလက်များကိုပြန်လည်ရယူခြင်းစွမ်းရည်များဖြင့်ထောက်ပံ့ပေးသည်။ သို့သော်အချက်အလက်ပမာဏဆက်လက်ကြီးထွားလာသည်နှင့်အမျှရှာဖွေမှုမြန်နှုန်းသည်ဒုက္ခရောက်နိုင်သည်။ System Responsive ကိုမြင့်မားစွာ 0 န်ဆောင်မှုပေးနိုင်ရန်အတွက်ကျွန်ုပ်တို့သည် ElastICEART ၏စွမ်းဆောင်ရည်ကိုညှိနှိုင်းမှုညှိနှိုင်းမှုနည်းဗျူဟာများဖြင့်ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ရန်လိုအပ်သည်။ ဤဆောင်းပါးသည် Search စွမ်းဆောင်ရည်ကိုတိုးတက်စေရန် PHP တွင် ElastUssearch ကိုအသုံးပြုရမည်ကိုမိတ်ဆက်ပေးရန်လက်တွေ့ကျကျကုဒ်များကိုပေါင်းစပ်မည်။
ကောင်းမွန်သောရှာဖွေမှုစွမ်းဆောင်ရည်ကိုရရှိရန်ဟာ့ဒ်ဝဲဖောင်ဒေးရှင်းသည်အလွန်အရေးကြီးသည်။ အချက်အလက်အမြောက်အများရှိသောအသုံးချပရိုဂရမ်များအနေဖြင့် SSD hard drives များနှင့်ကြီးမားသောစွမ်းဆောင်ရည်မှတ်ဉာဏ်တပ်ဆင်ထားသောစက်များကဲ့သို့သောစွမ်းဆောင်ရည်မြင့်ဆာဗာများကိုရွေးချယ်ရန်အကြံပြုသည်။ SSD သည် indexing နှင့် query speed ကိုသိသိသာသာတိုးတက်စေနိုင်သည်။
ထို့အပြင် Threads အရေအတွက်နှင့်အမှိုက်ပုံမှတ်ဉာဏ်အရွယ်အစားကဲ့သို့သော parameters များကိုစီမံကိန်း၏အမှန်တကယ်လိုအပ်ချက်များနှင့်အညီ elasticsearch.yml configuration file တွင်ချိန်ညှိနိုင်သည်။ ဥပမာအားဖြင့်:
# elasticsarch.yml နမူနာ specuration bootstrap.memory_lock: True Indices.memory.index_buffer_size: 30% Thread_pool.search.Size: 20
ဤရွေ့ကားညှိနှိုင်းမှုကွဲပြားခြားနားသောဟာ့ဒ်ဝဲပတ် 0 န်းကျင်အောက်တွင်အကောင်းဆုံးစွမ်းဆောင်ရည်ကိုရရှိရန်ကူညီသည်။
Index Design သည်တိုက်ရိုက်မေးမြန်းခြင်းစွမ်းဆောင်ရည်ကိုတိုက်ရိုက်သက်ရောက်သည်။ စနစ်တကျနယ်ပယ်မြေပုံကိုစနစ်တကျသတ်မှတ်ခြင်းသည်သိုလှောင်မှု overhead ကိုထိထိရောက်ရောက်လျှော့ချနိုင်ပြီးရှာဖွေရေးထိရောက်မှုကိုတိုးတက်စေသည်။ စာသား full-text search fields အတွက်သင့်လျော်သောစကားလုံးချိုးဖောက်မှုများကိုတိုးတက်စေရန်သင့်တော်သောစကားလုံးချိုးဖောက်မှုများကိုဖွင့်ရန်အကြံပြုသည်။
ဒေတာပမာဏသည်ကြီးမားသည့်အခါအညွှန်းကို Shard ယန္တရားမှတဆင့်ဖြန့်ဝေမှုယန္တရားများကိုအပြည့်အဝအသုံးချနိုင်ရန်အတွက်ဖြန့်ဝေသင့်သည်။ ဥပမာအားဖြင့်:
ထုတ်ကုန်များ / ထုတ်ကုန်များ { "ချိန်ညှိချက်များ": { "နံပါတ် _of_shards": 5, "number_of_Rplicas": 1 }, "မြေပုံများ": { "ဂုဏ်သတ္တိများ": { "Name": {"type type": "type type": "Analyzer": "Standard"}: "စျေးနှုန်း": {"အမျိုးအစား": "float"} } } }
elastinsearch သည်စုံစမ်းမှုစွမ်းအားတိုးတက်စေရန်အတွက်သိုလှောင်ထားသည့်ယန္တရားအမျိုးမျိုးကိုထောက်ပံ့ပေးသည်။ ထပ်ခါတလဲလဲမေးမြန်းချက်များအတွက်စနစ်သည်ကွန်ပျူတာ overhead ကိုလျှော့ချရန် system query cache သို့မဟုတ် cache ကိုသုံးနိုင်သည်။
Cache အရွယ်အစားနှင့်သက်တမ်းကုန်ဆုံးမူဝါဒများကိုသင့်လျော်စွာသတ်မှတ်ခြင်းအားဖြင့်သင်သည်စွမ်းဆောင်ရည်နှင့်မှတ်ဉာဏ်အသုံးပြုမှုအကြားမျှတမှုကိုရရှိနိုင်သည်။ ဥပမာအားဖြင့်:
_cluster / settings ကိုရယူပါ { "မြဲ": { "Indices.Queries.cache.cache.cache.cache": "20%" } }
ရှာဖွေရေးယုတ္တိဗေဒကိုရေးသောအခါသင့်လျော်သောစုံစမ်းမှုအမျိုးအစားနှင့်ဖွဲ့စည်းပုံကိုရွေးချယ်ခြင်းသည်စွမ်းဆောင်ရည်ကိုထိရောက်စွာတိုးတက်စေနိုင်သည်။ Boolean Queries သည်မလိုအပ်သောစာရွက်စာတမ်းများကိုစစ်ထုတ်ခြင်းများဖြင့်မလိုအပ်သောစာရွက်စာတမ်းအရေအတွက်ကိုလျှော့ချရန်အခြေအနေများစွာကိုပေါင်းစပ်။ ရှာဖွေခြင်းကိုမြန်မြန်ဆန်ဆန်ရှာဖွေခြင်းကိုအရှိန်မြှင့်နိုင်သည်။
{ "စုံစမ်းမှု": { "Bool": { "ရမန်တော်" - [{"match": {"ခေါင်းစဉ်": "elastiUsearch"}:}] "filter": [{"အသုံးအနှုန်း": {"status": "Active"}}} } } }
ထို့အပြင်ရမှတ်များယန္တရားသည်အသုံးပြုသူရှာဖွေရေးရည်ရွယ်ချက်နှင့်ပိုမိုကိုက်ညီစေရန်ရလဒ်အဆင့်သတ်မှတ်ချက်ကိုညှိရန်အသုံးပြုနိုင်သည်။
အချက်အလက်အမြောက်အများကိုပြုပြင်သည့်အခါမကြာခဏဆိုသလိုတစ်ခုတည်းတောင်းဆိုမှုများသည်ကွန်ရက်အရင်းအမြစ်များကိုဖြုန်းတီးစေလိမ့်မည်။ elastinsearch သည်အသုတ်လုပ်ခြင်း (အမြောက်အများ API) ကိုထောက်ပံ့ပေးသည်။
post / _bulk {"အညွှန်းကိန်း": {"_index": "_ID": "_ID": _} {"name": "iPhone 15", "စျေးနှုန်း": 799} {"အညွှန်းကိန်း": {"_index": "_ID": "_id":} {"Name": "Galaxy S24", "စျေးနှုန်း": 699}
Batch API ကိုအသုံးပြုခြင်းသည် PHP application များကို PHP application များကိုမြင့်မားသောအပြန်အလှန်အကျိုးသက်ရောက်မှုရှိစေရန်ပိုမိုတည်ငြိမ်သောစွမ်းဆောင်ရည်ကိုထိန်းသိမ်းရန်ခွင့်ပြုနိုင်သည်။
ဤဆောင်းပါးကိုမိတ်ဆက်ပေးခြင်းဖြင့် PHP elastInearch ၏ရှာဖွေမှုစွမ်းဆောင်ရည်ကို Hardware Configuration, Index ဒီဇိုင်း, Caching ယန္တရား, ဤနည်းဗျူဟာများသည်အမှန်တကယ်စီမံကိန်းများအတွက်ကျယ်ပြန့်သောအသုံးချနိုင်မှုရှိပြီး developer များပိုမိုထိရောက်သောတည်ငြိမ်သောရှာဖွေရေးစနစ်များကိုတည်ဆောက်ရန်ကူညီနိုင်သည်။