ကြီးမားသောအချက်အလက်များ၏ခေတ်တွင်စွမ်းဆောင်ရည်မြင့်မားသောအချိန်နှင့်တပြေးညီရှာဖွေရေးအင်ဂျင်များသည်လျင်မြန်စွာတုံ့ပြန်ရန်နှင့်အချက်အလက်အမြောက်အများကိုလုပ်ဆောင်ရန်အလွန်အရေးကြီးသည်။ asynchronous coroutine နည်းပညာပေါ်ပေါက်လာခြင်းက developer များဤသို့သောအင်ဂျင်ကိုထိထိရောက်ရောက်တည်ဆောက်ရန်ကူညီနိုင်သည့်နည်းလမ်းသစ်ကိုပေးသည်။ ဤဆောင်းပါးသည်ပြတ်တောင်းပြတ်တောင်း coroutines များ၏အခြေခံမူများကိုအသေးစိတ်လေ့လာပြီးထိရောက်သောအချိန်မှန်ရှာဖွေရေးအင်ဂျင်ကိုတည်ဆောက်ရန်၎င်းကိုမည်သို့အသုံးပြုရမည်ကိုပြသရန်တိကျသောကုဒ်နမူနာများကိုအသုံးပြုပါမည်။
ပြတ်တောင်းပြတ်တောင်း coroutines များသည်ပေါ့ပါးသောတစ်ပြိုင်နက်တည်းပရိုဂရမ်းမင်းမော်ဒယ်လ်တစ်ခုဖြစ်သည်။ Coroutine Switching နှင့်ပိတ်ဆို့ခြင်းမဟုတ်သော I / O စစ်ဆင်ရေးများမှတဆင့်စနစ်အရင်းအမြစ်များကိုထိရောက်စွာအသုံးချနိုင်သည်။ ရိုးရာချုပ်နှောပိတ်ဆို့ခြင်းမော်ဒယ်တွင်တောင်းဆိုမှုတစ်ခုစီသည်ချည်မျှင်တစ်ခုစီကိုသိမ်းပိုက်ရန်လိုအပ်ပြီးအရင်းအမြစ်များကိုဖြုန်းတီးစေသည်။ asynchronous coroutines များသည်စနစ်၏တစ်ပြိုင်နက်တည်းလုပ်ဆောင်မှုများကိုအခြားလုပ်ငန်းများမှများစွာတိုးတက်ကောင်းမွန်စေသည်။ ၎င်းသည်ချည်ပိတ်ဆို့ခြင်းကိုရှောင်ရှားနိုင်ပြီးစနစ်တကျနှင့်တုန့်ပြန်မှုမြန်နှုန်းကိုတိုးတက်စေနိုင်သည်။
ထိရောက်သော Real-time search engine ကိုတည်ဆောက်ရန်အောက်ပါနည်းပညာများကိုကျွန်ုပ်တို့ကျင့်သုံးရန်အောက်ပါနည်းပညာများကိုလက်ခံနိုင်သည်။
အချိန်နှင့်တပြေးညီရှာဖွေရေးအင်ဂျင်များ၏အဓိကအကြောင်းတစ်ခုမှာတစ်ပြိုင်နက်တည်းတောင်းဆိုမှုများကိုကိုင်တွယ်နေသည်။ asynchronous io စာကြည့်တိုက်သည်ပိတ်ဆို့ခြင်းမဟုတ်သောစစ်ဆင်ရေးများကိုဖြည့်ဆည်းပေးနိုင်ပြီးတစ်ပြိုင်နက်တည်းလုပ်ဆောင်မှုကိုထိရောက်စွာတိုးတက်စေနိုင်သည်။ Python ရှိ Tornado နှင့် Asyncio တို့သည်အသုံးအများဆုံးသောတောင်းဆိုမှုများကိုထိရောက်စွာကိုင်တွယ်နိုင်သည့်အများအားဖြင့်အသုံးပြုသော asynchronous io libraries နှစ်ခုဖြစ်သည်။
ရှာဖွေရေးအင်ဂျင်များသည်ထပ်ခါတလဲလဲတွက်ချက်မှုပြ problem နာကိုမကြာခဏရင်ဆိုင်နေရသည်။ တူညီသောသော့ချက်စာလုံးကိုရှာဖွေသည့်အခါတိုင်းသူတို့သည်ရှာဖွေမှုရလဒ်များကိုပြန်လည်တွက်ချက်ကြပြီးကွန်ပျူတာအရင်းအမြစ်များကိုဖြုန်းတီးစေသည်။ ဤပြ problem နာကိုဖြေရှင်းရန် cache ကို cache ကို cache ကို cache ကို Cache နှင့်မလိုအပ်သောတွက်ချက်မှုများကိုလျှော့ချရန်နှင့်မလိုအပ်သောတွက်ချက်မှုများကိုလျှော့ချနိုင်သည်။
Inverted Indexing ဆိုသည်မှာ docordss ၏တည်နေရာသို့သော့ချက်စာလုံးများကိုမြေပုံရေးခြင်းဖြင့်ရှာဖွေခြင်းစွမ်းဆောင်ရည်ကိုပိုမိုကောင်းမွန်စေသောဘုံအချက်အလက်ဖွဲ့စည်းပုံဖြစ်သည်။ သော့ချက်စာလုံးပါပါ 0 င်သည့်စာရွက်စာတမ်းများကိုလျင်မြန်စွာရှာဖွေရန် inverted ညွှန်းကိန်းများကို သုံး. ရှာဖွေရေးအင်ဂျင်တုန့်ပြန်မှုမြန်နှုန်းကိုတိုးတက်အောင်ပြုလုပ်ပါ။
Tornado asynchronous IO စာကြည့်တိုက်နှင့် Inverted Inverted Index ကို အခြေခံ. Real-time corizing engine ၏ကုဒ်နမူနာတစ်ခုမှာဤနေရာတွင်ဖော်ပြထားသည်။
import tornado.web
import tornado.ioloop
import asyncio
# ရှာဖွေရေးအင်ဂျင်သင်တန်းများကိုသတ်မှတ်ပါ
class SearchEngine:
def __init__(self):
self.index = {} # inverted အညွှန်းကိန်း
# စာရွက်စာတမ်းတစ်ခုထည့်ပါ
def add_document(self, doc_id, content):
for word in content.split():
if word not in self.index:
self.index[word] = set()
self.index[word].add(doc_id)
# သော့ချက်စာလုံးဖြင့်ရှာဖွေပါ
def search(self, keyword):
if keyword in self.index:
return list(self.index[keyword])
else:
return []
class SearchHandler(tornado.web.RequestHandler):
async def get(self):
keyword = self.get_argument('q') # ရှာဖွေရေးသော့ချက်စာလုံးများရယူပါ
result = search_engine.search(keyword) # ရှာဖွေရေးလုပ်ဆောင်ပါ
self.write({'result': result}) # ရှာဖွေမှုရလဒ်များကိုပြန်သွားပါ
if __name__ == "__main__":
search_engine = SearchEngine()
search_engine.add_document(1, 'This is a test')
search_engine.add_document(2, 'Another test')
app = tornado.web.Application([
(r'/search', SearchHandler)
])
app.listen(8080)
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) # ဖြေရှင်းနိုင်Windowsအောက်တွင်ဖော်ပြထားသောအမှားပြ problem နာ
tornado.ioloop.IOLoop.current().start()
ဤကုဒ်သည်သော့ချက်စာလုံးများကို အခြေခံ. စာရွက်စာတမ်းများကိုထည့်သွင်းခြင်းနှင့်ရှာဖွေခြင်းကို အခြေခံ. စာရွက်စာတမ်းများထည့်သွင်းခြင်း၏လုပ်ဆောင်ချက်များပါ 0 င်သည့် `searchengine ၏လုပ်ဆောင်ချက်များကိုဆိုလိုသည်။ ရှာဖွေရေးတောင်းဆိုမှုများကိုလက်ခံရရှိသည့် `searchhander ၏အတန်းကိုလည်းကျွန်ုပ်တို့ဖန်တီးခဲ့သည်။ ရှာဖွေမှုရလဒ်များကိုပြန်ပို့သည်။ ပြတ်တောင်းပြတ်တောင်း IO နှင့် Inverted Inverding Inverted Inverexing ကိုပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ရိုးရိုးရှင်းရှင်းနှင့်ထိရောက်သော Real-time search engine ကိုတည်ဆောက်ခဲ့သည်။
ဤဆောင်းပါးမှတစ်ဆင့်မှာပြတ်တောင်းပြတ်တောင်း coroutine နည်းပညာနှင့်စွမ်းဆောင်ရည်မြင့်မားသောအချိန်ရှာဖွေရေးအင်ဂျင်ဖွံ့ဖြိုးတိုးတက်မှုအတွက်မည်သို့အသုံးပြုနိုင်သည်ကိုကျွန်ုပ်တို့လေ့လာသည်။ asynchronous io libraries များနှင့် Inverted Inverexing ကဲ့သို့သောနည်းပညာများနှင့်အတူကျွန်ုပ်တို့သည်ရှာဖွေရေးအင်ဂျင်များ၏ throughput နှင့်တုံ့ပြန်မှုမြန်နှုန်းကိုထိရောက်စွာတိုးတက်အောင်လုပ်နိုင်သည်။ ဤဆောင်းပါးသည်စွမ်းဆောင်ရည်မြင့်မားသောစနစ်များရှိ allynchronous coroutines များကိုပိုမိုလေ့လာရန်လှုံ့ဆော်မှုအချို့ကိုလှုံ့ဆော်ပေးနိုင်သည့် developer များအားပေးနိုင်လိမ့်မည်ဟုကျွန်ုပ်မျှော်လင့်ပါသည်။