Дата подготовки материала: 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»
- Определите, какие знаки препинания критичны для вашего домена (например, дефис в составных словах, апостроф в сокращениях).
- Создайте функцию очистки
clean_text(text), которая последовательно применяетREPLACEдля выбранного набора символов. - Для полнотекстовых индексов настройте анализатор так, чтобы он либо игнорировал выбранные знаки, либо рассматривал их как часть токена в зависимости от задачи.
- При необходимости точного совпадения оборачивайте фразу в двойные кавычки и используйте оператор
LIKEилиCONTAINSс флагомQUOTED. - Тестируйте набор запросов с разнообразной пунктуацией (точка, запятая, точка с запятой, скобки, кавычки) и фиксируйте показатели recall/precision.
- Если объём данных велик, рассмотрите возможность предварительной нормализации текста при загрузке (хранение очищенной версии в отдельном столбце).
Пример реализации в 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, можно значительно повысить релевантность результатов и уменьшить количество ложных отрицаний.
Следуя рекомендациям выше, вы сможете построить надёжный поисковый механизм, который будет корректно обрабатывать как латинские, так и кириллические тексты, независимо от того, какие знаки препинания присутствуют в пользовательском вводе.