در این قسمت آموزشی قصد دارم شما را با چند راهکار و قابلیت پیشرفتهتر در مبحث text analysis آشنا کنم. در ویدیوی زیر برخی نقصهای analyzer دلخواهی که ایجاد کردیم بررسی میشود و برای رفع نواقص آن راهکارهایی با استفاده از قابلیتهای Elasticsearch ارائه میشود.
این نکته را در نظر داشته باشید میزان انعطاف پذیری و پیشرفته بودن یک موتور جستجو ارتباط مستقیم با دقت و حوصلهی کافی توسعهدهندگان برای بررسی نحوهی عملکرد آن در شرایط و ورودیهای مختلف دارد!
چکیده نکات آموزشی این قسمت:
- در شرایطی که نیاز به اجرای کوئریهایی خاص متناسب با نیازمندیهای متفاوت روی دادهها وجود دارد و نوع تجزیهی فیلد مورد نظر برای نیازمندی مناسب نباشد، بهترین راه استفاده از قابلیت multi-fields در mapping آن فیلد است تا حالات مختلف از دادههای ایندکس شده در یک فیلد داشته باشیم و در کوئریهای مختلفی از آنها استفاده کنیم.
- در مواقعی که انعطافپذیری بیشتری در کوئری جستجو نیاز داریم، میتوان از تکنیکهایی نظیر حفظ term های اصلی ضمن اعمال فیلترهای مختلف و یا استفاده از فیلترهایی مانند ngram برای تولید term هایی با جزییات بیشتر، کمک گرفت.
- توجه کنید هریک از روشهایی که باعث شوند تا تعداد term بیشتری در inverted index ذخیره شود (فیلتر ngram، تکنیک multi_field و ...)، باعث میزان مصرف بیشتر فضای حافظه نیز خواهند شد! بنابراین استفاده از روشهای فوق برای فیلدهای متنی با حجم خیلی زیاد (متنهای خیلی طولانی) شاید مقرون به صرفه نباشد.
- برخی از قابلیتهای ایجاد انعطاف بیشتر برای موتور جستجو، در تنظیمات کوئریهای جستجو قابل پیادهسازی است که در فصل آینده با آنها آشنا خواهید شد.