AACSearch
ГлоссарийОсновы поиска

Основы поиска

Базовые понятия поиска: индекс, документ, поле, токенизация и как устроен быстрый поиск.

Основы поиска

Поиск кажется магией: вы вводите слово — и мгновенно получаете результат. Под капотом — несколько простых идей, которые стоит понимать, чтобы настраивать AACSearch осознанно: как хранятся данные, как текст превращается в «искаемые» кусочки и что происходит с запросом, пока он не стал выдачей.

Как устроены данные

  • Индекс (index) — набор документов с определённой схемой; то, по чему выполняется поиск. Один индекс на каталог, сайт или базу знаний.
  • Коллекция (collection) — хранилище, лежащее в основе индекса (коллекция + схема + настройки).
  • Документ (document) — одна запись в индексе: товар, страница, статья.
  • Поле (field) — именованный атрибут документа, например title, price, brand.
  • Схема (schema) — объявленный список полей индекса и их типов. От неё зависит, по каким полям можно искать и фильтровать.
  • Инвертированный индекс (inverted index) — структура, сопоставляющая каждый токен документам, где он встречается. Именно она делает поиск быстрым: вместо перебора всех документов движок сразу знает, где находится слово.

Как текст превращается в токены

  • Токенизация (tokenization) — разбиение текста на токены (слова), которые индексируются.
  • Токен (token) — одна индексируемая единица текста, обычно слово.
  • Стемминг (stemming) — приведение слов к общему корню (running → run), чтобы формы слова находили друг друга.
  • Лемматизация (lemmatization) — приведение слова к словарной форме с учётом морфологии. Точнее стемминга, но дороже.
  • Стоп-слова (stop words) — очень частые слова, игнорируемые при индексации и запросе (и, в, на). Их отбрасывание ускоряет поиск и снижает шум.
  • Синоним (synonym) — слово, сопоставленное эквивалентным терминам (кроссовки = кеды).
  • N-грамма (n-gram) — последовательность из n символов/слов для частичного совпадения и опечаток.
  • Словоизменение (inflection) — грамматические формы слова (число, падеж). Важно для русского языка.
  • Фонетическое совпадение (phonetic matching) — совпадение по звучанию (имена, бренды).
  • Определение языка (language detection) — определение языка запроса для применения нужных правил.
  • Нормализация символов (character normalization) — приведение регистра и диакритики (é → e), чтобы «АСУС» и «асус» находились одинаково.

Запрос и результат

  • Запрос (query) — текст, который ищет пользователь.
  • Термины запроса (query terms) — отдельные токены после разбора запроса.
  • Поисковый запрос (search request) — один вызов API поиска или виджета.
  • Результат (search result) — один документ, возвращённый на запрос.
  • Хит (hit) — совпавший результат; часто нестрого «результат».
  • Набор результатов (result set) — упорядоченный список возвращённых документов.
  • Пагинация (pagination) — разбиение выдачи на страницы.
  • Страница / размер (page / per_page) — номер и размер запрашиваемой страницы.
  • Сортировка (sort) — упорядочивание результатов по полю вместо релевантности.
  • Группировка (grouping) — схлопывание почти одинаковых результатов (товар и его варианты).
  • Distinct — удаление повторяющихся значений поля из выдачи.
  • Подсветка (highlighting) — выделение совпавших слов внутри сниппета.
  • Сниппет (snippet) — короткий выделенный отрывок под результатом.

Продвинутое совпадение

  • Поиск по префиксу (prefix search) — совпадение по началу слова (теле → телефон).
  • Поиск по суффиксу (suffix search) — совпадение по окончанию слова.
  • Wildcard — * или ? для неизвестных символов в запросе.
  • Regex-запрос (regex query) — поиск по регулярному выражению.
  • Экранирование (escaping) — трактовка специальных символов как обычного текста, чтобы запрос «C++» не сломался.

On this page