پرش به محتوا

پیش‌نویس:جستجوی Trigram

از ویکی‌پدیا، دانشنامهٔ آزاد

جستجوی Trigram روشی برای جستجوی متن است، زمانی که نحو یا املای دقیق شی هدف دقیقاً شناخته نشده باشد [۱] یا زمانی که کوئری ممکن است عباراتی منظم باشند. [۲] اشیایی را پیدا می کند که با حداکثر تعداد سه رشته کاراکتر متوالی (به عنوان مثال تریگرام ها ) در عبارات جستجوی وارد شده مطابقت دارند، که معمولاً تقریباً مطابقت دارند. [۳] می توان انتظار داشت که دو رشته با تریگرام های مشترک بسیار شبیه یکدیگر باشند. [۴] تریگرام ها همچنین امکان ایجاد کارآمد فهرست های موتور جستجو را برای جستجوهایی که عبارات منظم هستند یا دقیقاً با متن مطابقت دارند ایجاد می کنند. ایندکس ها می توانند به میزان قابل توجهی جستجو را تسریع کنند. [۵] [۶] یک آستانه برای تعداد منطبق‌های سه‌گرام می‌تواند به عنوان نقطه برش، پس از عدم تطابق یک نتیجه، مشخص شود.

[۷]

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

مثال ها[ویرایش]

رشته «alice» را در نظر بگیرید. سه‌گرام‌های رشته عبارتند از «ali»، «lic» و «ice» بدون احتساب فاصله. [۱۲] جست‌وجوی این رشته در پایگاه‌داده‌ای با شاخص مبتنی بر تریگرام شامل یافتن این است که کدام اشیاء تا حد ممکن حاوی سه ثلث هستند.

[۱۳]

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

See also[ویرایش]

منابع[ویرایش]

  1. Hardarson, Omar (1997). "Interactive coding of economic activity using trigram search in BLAISE III" (PDF). International Blaise User Group. Note: This article discusses trigram search as a way of efficiently encoding certain kinds of economic data, and finds that this technique is particularly useful when the users of the system have little context for the structure of the data.
  2. Cox, Russ (January 2012). "Regular Expression Matching with a Trigram Index or How Google Code Search Worked".
  3. {{cite book}}: Empty citation (help)
  4. "F.33. pg_trgm". PostgreSQL Documentation (به انگلیسی). 2022-05-12. Retrieved 2022-05-28.
  5. "Fast Search Using PostgreSQL Trigram Text Indexes". GitLab (به انگلیسی). 2016-03-18. Retrieved 2022-05-28.
  6. Zobel, Justin; Moffat, Alistair; Sacks-Davis, Ron (1993). "Searching Large Lexicons for Partially Specified Terms using Compressed Inverted Files" (PDF). Conference on Very Large Databases (VLDB). Note: This research paper does not use the term "trigram search" but does seem to be the first instance in the literature of using n-grams as indices, and is cited in the Russ Cox article as the first instance of the structure of a reverse index based on trigrams. The paper also cited successful performance results from using this style of search.
  7. "F.33. pg_trgm". PostgreSQL Documentation (به انگلیسی). 2022-05-12. Retrieved 2022-05-28.
  8. "Fast Search Using PostgreSQL Trigram Text Indexes". GitLab (به انگلیسی). 2016-03-18. Retrieved 2022-05-28.
  9. Cox, Russ (January 2012). "Regular Expression Matching with a Trigram Index or How Google Code Search Worked".
  10. "Big Grep". resources.sei.cmu.edu (به انگلیسی). Retrieved 2022-06-12. Also called BigGrep. Uses n-grams (not always 3),
  11. "N-gram tokenizer | Elasticsearch Guide [8.2] | Elastic". www.elastic.co (به انگلیسی). Retrieved 2022-05-28.
  12. "Fast Search Using PostgreSQL Trigram Text Indexes". GitLab (به انگلیسی). 2016-03-18. Retrieved 2022-05-28.
  13. Cox, Russ (January 2012). "Regular Expression Matching with a Trigram Index or How Google Code Search Worked".

جستجوی سه گرام[ویرایش]