Что такое Боковая 11?

Раскрываем тайну «Боковой 11» — главное правило обработки спецсимволов. Учитесь находить всё, игнорируя знаки препинания и ложные отрицания!

Дата подготовки материала: 13:54:11 ().


Что такое «Боковая 11»?

Термин «Боковая 11» появился в обсуждениях специалистов по базам данных и поисковым системам как условное обозначение одиннадцатого пункта рекомендаций по обработке специальных символов и знаков препинания при формировании поисковых запросов. Хотя сам термин не является официальным стандартом, он стал удобным способом ссылаться на набор лучших практик, которые помогают избежать ложных отрицаний и неполных результатов из‑за пунктуации.

В представленных ниже фрагментах из интернета (Stack Overflow, LexisNexis, Medium и др.) рассматриваются типичные проблемы:

  • Необходимость учитывать пунктуацию в полнотекстовых поисках.
  • Влияние регистронезависимого сравнения на кириллицу.
  • Способы экранирования и перезаписи запросов с помощью LLM‑li>

Почему пунктуация выделением точных фраз.

Почему пунктуация важна в поиске?

Когда пользователь вводит запрос, содержащий знаки препинания (точка, запятая, дефис, кавычки и т.д.), поисковый движок может интерпретировать эти символы как часть слова. В результате:

  • Точное совпадение слово. не найдено, если в индексе хранится только слово.
  • Поиск по подстрокам прерывается, потому что движок считает пунктуацию границей токена.
  • Регистронезависимые операции (LOWER) могут давать ложный ноль для русских символов, если в запросе присутствуют знаки.

Как указано в одном из источников (Stack Overflow, 2017‑11‑14), простейший способ обойти эту проблему — заменить все специальные символы пустой строкой или пробелом перед сравнением.

Основные методы обработки пунктуации

Замена специальных символов функцией REPLACE

В MySQL и PostgreSQL можно построить цепочку вызовов REPLACE, которая удаляет либо заменяет знаки препинания на нейтральные символы (например, пробел).

SELECT *
FROM table
WHERE REPLACE(REPLACE(REPLACE(column_name, '.', ''), ',', ''), '-', '') LIKE '%слово%';

Подобный подход упоминается в фрагменте mysql – Return results that contain or do not contain punctuation (2017‑11‑14).

Экранирование фраз двойными кавычками

Многие поисковые движки (LexisNexis, Elasticsearch, полнотекстовый поиск в SGBD) рассматривают текст внутри двойных кавычек как literal‑строку, где пунктуация становится частью искомого токена.

Пример из источника Advanced Search Options: Reserved Words, Special Characters and Punctuation in Search Queries (LexisNexis, 2023‑11‑07):

SELECT *
FROM documents
WHERE CONTENT LIKE '"точное слово,"';

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

В PostgreSQL и MySQL можно задать собственный парсер или фильтр, который будет рассматривать пунктуацию как разделитель, а не как часть лексемы.

Пример для PostgreSQL (используя unaccent и pg_trgm):

CREATE EXTENSION IF NOT EXISTS pg_trgm;
CREATE EXTENSION IF NOT EXISTS unaccent;

SELECT *
FROM table
WHERE to_tsvector('simple', unaccent(column_name)) @@ plainto_tsquery('simple', 'слово');

Такой подход решает проблему, описанную в статье postgresql – Search is not working with lowercase LIKE for russian characters (Stack Overflow).

Переписывание запросов с помощью LLM (Large Language Model)

Современные подходы предлагают использовать языковые модели для генерации эквивалентных вариантов запроса, где пунктуация либо удаляется, либо помещается в кавычки. Это повышает recall без потери precision.

Упоминается в материале Query rewriting strategies for LLMs search engines (Elasticsearch Labs, 2026‑01‑30).

Практические рекомендации для «Боковой 11»

  1. Определите, какие знаки препинания критичны для вашего домена (например, дефис в составных словах, апостроф в сокращениях).
  2. Создайте функцию очистки clean_text(text), которая последовательно применяет REPLACE для выбранного набора символов.
  3. Для полнотекстовых индексов настройте анализатор так, чтобы он либо игнорировал выбранные знаки, либо рассматривал их как часть токена в зависимости от задачи.
  4. При необходимости точного совпадения оборачивайте фразу в двойные кавычки и используйте оператор LIKE или CONTAINS с флагом QUOTED.
  5. Тестируйте набор запросов с разнообразной пунктуацией (точка, запятая, точка с запятой, скобки, кавычки) и фиксируйте показатели recall/precision.
  6. Если объём данных велик, рассмотрите возможность предварительной нормализации текста при загрузке (хранение очищенной версии в отдельном столбце).

Пример реализации в MySQL

DELIMITER $$

CREATE FUNCTION clean_punctuation(src TEXT)
RETURNS TEXT
DETERMINISTIC
BEGIN
 DECLARE res TEXT;
 SET res = src;
 SET res = REPLACE(res, '.', '');
 SET res = REPLACE(res, ',', '');
 SET res = REPLACE(res, '-', '');
 SET res = REPLACE(res, ':', '');
 SET res = REPLACE(res, ';', '');
 SET res = REPLACE(res, '"', '');
 SET res = REPLACE(res, '''', '');
 RETURN res;
END$$

DELIMITER ;

SELECT *
FROM my_table
WHERE clean_punctuation(description) LIKE '%искомое слово%';

«Боковая 11» — это не просто набор советов, а системный подход к обеспечению корректной работы поисковых запросов в присутствии пунктуации. Применяя методы замены символов, экранирования кавычками, настройки полнотекстовых анализаторов и современные техники переписывания запросов с помощью LLM, можно значительно повысить релевантность результатов и уменьшить количество ложных отрицаний.

Следуя рекомендациям выше, вы сможете построить надёжный поисковый механизм, который будет корректно обрабатывать как латинские, так и кириллические тексты, независимо от того, какие знаки препинания присутствуют в пользовательском вводе.