ГлоссарийОсновы поиска
Основы поиска
Базовые понятия поиска: индекс, документ, поле, токенизация и как устроен быстрый поиск.
Основы поиска
Поиск кажется магией: вы вводите слово — и мгновенно получаете результат. Под капотом — несколько простых идей, которые стоит понимать, чтобы настраивать 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++» не сломался.