Draft:جستجوی Trigram

Triagram Search یک روش برای جستجوی یک متن است، زمانی که سینتکس یا تلفظ دقیق شی مورد نظر به طور دقیقی مشخص شده نباشد  یا زمانی که کوئری ه ممکن است از عبارات منظم(regular expressions) باشند. شی هایی را پیدا می کند که با حداکثر سه رشته از جنس کاراکتر متوالی (برای مثال Tiagram ) که در عبارت های جستجوی وارد شده مطابقت دارند، که معمولاً باهم تطابق دارند. می توان انتظار اینو داشت که دو رشته با تریگرام های مشترک تا حد زیادی شبیه به هم باشند. علاوه بر این تریگرام ها توانایی ایجاد نمایه(index) های موتور جستجو را برای جستجوهایی که عبارات منظم هستند یا دقیقاً با متن مطابقت دارند ایجاد می کنند. نمایه ها می توانند به طور قابل توجهی جستجو را سریع تر کنند. یک آستانه برای تعداد منطبق‌های سه‌گرام می‌تواند به عنوان نقطه برش، بعد از عدم تطابق داشتن یک نتیجه، مشخص شود.

استفاده کردن از تریگرام ها برای سرعت بخشیدن به جستجوها یک تکنیکی است که در برخی از سیستم ها برای جستجوی کد استفاده می شود، در شرایطی که عبارت ها و کوئری ها از جنس عبارات منظم هستند امکان دارد مفید باشند،    در موتورهای جستجو مانند Elasticsearch ،  نیز مانند پایگاه داده هایی مانند PostgreSQL.

مثال ها
برای مثال رشته "alice" را در نظر بگیرید. سه‌گرام‌های رشته عبارتند از "ali"،

"lic" و "ice" بدون حساب کردن فاصله ها. جست‌وجوی این رشته در پایگاه‌داده‌ای با شاخص مبتنی بر تریگرام، مستلزم یافتن این است که کدام اشیاء تا حد ممکن حاوی سه گرام هستند

برای مثال یک مثال عینی از کارکرد یک جستجوی تریگرام برای جستجوی عبارت منظم است باز برای مثال جستجوی رشته ab[cd]e را در نظر بگیرید، جایی که براکت ها نشان می دهند که کاراکتر سوم در رشته جستجو شده می تواند c یا d باشد. در این شرایط، می‌توان از نمایه برای شی هایی که دو سه‌گرام abc و bce یا دو سه‌گرام abd و bde را شامل می شوند را پرس و جو کرد. بنابراین، پیدا کردن این کوئری لازم به عدم تطبیق رشته نیست و صرفا توانایی این را دارد مستقیما از نمایه ها برای پرس و جو استفاده کند که در عمل می تواند سریعتر باشد.

بیشتر ببینید
Approximate string matching

Google Code Search

N-gram