---
metadata:
  - name: generator
    content: Diplodoc Platform v5.50.6
alternate:
  - https://ydb.tech/docs/en/concepts/query_execution/fulltext_search.md?version=main
  - https://ydb.tech/docs/ru/concepts/query_execution/fulltext_search.md?version=main
sourcePath: ru/core/concepts/query_execution/fulltext_search.md
---
> **Documentation Index:** Fetch the complete configuration index at https://ydb.tech/docs/ru/llms.txt

# Полнотекстовый поиск

## Понятие полнотекстового поиска

**Полнотекстовый поиск** — это способ находить документы по текстовому содержимому в колонке типа `String` или `Utf8` по словам, фразам и (при специальной индексации) по подстрокам. В отличие от простых строковых предикатов, полнотекстовый поиск обычно включает этапы **токенизации** и **нормализации** текста (например, приведение к нижнему регистру), что позволяет искать по "термам", а не по байтовым подстрокам. Типичные сценарии:

* поиск по каталогам и базам знаний;
* поиск по логам/сообщениям;
* поиск по описаниям и метаданным.

Ключевая идея полнотекстового индекса — **[инвертированный индекс](https://ru.wikipedia.org/wiki/Инвертированный_индекс)**: для каждого терма хранится список документов (первичных ключей), в которых этот терм встречается. Поэтому запросы вида "найти документы, где встречаются слова A и B" можно выполнять без полного сканирования таблицы.

В YDB полнотекстовый поиск можно выполнять двумя основными способами:

* **без индекса** — сканированием таблицы и применением строковых предикатов (например, `LIKE`). Подход прост, но плохо масштабируется: объём работы растёт вместе с размером таблицы.
* **с полнотекстовым индексом** — созданием [полнотекстового индекса](https://ydb.tech/docs/ru/dev/fulltext-indexes.md?version=main) и выполнением запросов через `VIEW IndexName`. Этот подход предназначен для масштабируемого поиска.

## Полнотекстовый поиск с полнотекстовым индексом {#fulltext-search-index}

Полнотекстовые индексы строят инвертированный индекс по текстовой колонке и позволяют:

* выполнять полнотекстовое сопоставление через функцию [FulltextMatch](https://ydb.tech/docs/ru/yql/reference/builtins/fulltext.md?version=main#fulltext-match);
* ранжировать результаты по релевантности через функцию [FulltextScore](https://ydb.tech/docs/ru/yql/reference/builtins/fulltext.md?version=main#fulltext-score).

Поведение поиска (что считается термом, как обрабатываются регистр/формы слов, поддержка подстановок) задаётся при создании индекса через токенизатор и фильтры (например, lowercase, Snowball-стемминг, N-граммы). Подробности — в документации создания индекса [Полнотекстовый индекс](https://ydb.tech/docs/ru/yql/reference/syntax/create_table/fulltext_index.md?version=main).

Подробнее:

* [Полнотекстовые индексы](https://ydb.tech/docs/ru/dev/fulltext-indexes.md?version=main)
* [Базовые функции полнотекстового поиска](https://ydb.tech/docs/ru/yql/reference/builtins/fulltext.md?version=main)
* [VIEW (Полнотекстовый индекс)](https://ydb.tech/docs/ru/yql/reference/syntax/select/fulltext_index.md?version=main)
