Патент описывает инфраструктурные оптимизации для поисковых систем, в частности, для поиска по исходному коду. Он включает два основных механизма: 1) Кэширование результатов для дорогих повторяющихся запросов с обновлением кэша в реальном времени во время индексации. 2) Высокоэффективное префильтрование запросов с регулярными выражениями (regex) с помощью суффиксных массивов и обратного обхода автоматов.
Описание
Какую задачу решает
Патент решает проблему высокой задержки (latency) и значительных вычислительных затрат при обработке сложных запросов в больших корпусах данных (например, в репозиториях исходного кода). Конкретные проблемы включают:
- Высокую стоимость обработки запросов, использующих регулярные выражения (regular expressions), особенно с операторами повторения. Патент критикует существующие методы (например, prefilter trees) как неэффективные.
- Нагрузку на систему, вызванную «дорогими» запросами, которые пользователи вводят повторно (recurring queries).
- Требование предоставлять полный набор результатов (а не только Топ-N), что характерно для поиска по коду и увеличивает стоимость обработки.
Что запатентовано
Запатентована система оптимизации обработки запросов, сочетающая два независимых механизма. Первый — это система динамического кэширования для дорогих повторяющихся запросов (High-Cost Recurring Queries), при которой кэш (Prepared Results) обновляется в процессе индексации, а не при выполнении запроса. Второй — это новый метод префильтрации для запросов с регулярными выражениями, использующий Suffix Array и обратный обход (backward traversal) автомата или дерева операторов для быстрого сокращения числа документов-кандидатов.
Как это работает
Система работает по двум направлениям:
Оптимизация дорогих запросов:
- Анализатор логов идентифицирует запросы, которые повторяются и являются дорогими (по времени выполнения, числу обработанных документов или запросу всех результатов).
- Результаты этих запросов кэшируются (Prepared Results).
- Во время индексации новые или измененные документы проверяются на соответствие этим дорогим запросам (Offline Query Processor), и кэш обновляется в реальном времени.
- При поступлении такого запроса система быстро отдает закэшированные результаты.
Оптимизация регулярных выражений:
- Регулярное выражение преобразуется в автомат (Automaton) или дерево операторов (Operator Tree).
- Система выполняет обратный обход структуры, начиная с конечных узлов.
- На каждом шаге используется операция prepend для вычисления диапазонов в Suffix Array, соответствующих возможным совпадениям.
- Это позволяет эффективно префильтровать документы, содержащие нужный паттерн.
Актуальность для SEO
Средняя. Описанные методы (кэширование, суффиксные массивы) являются стандартными подходами в информатике для оптимизации поиска и сопоставления с образцом. Хотя патент сфокусирован на поиске исходного кода, эти инфраструктурные оптимизации, вероятно, используются во внутренних инструментах Google или специализированных сервисах, где требуется обработка сложных паттернов. Однако актуальность для стандартного веб-поиска ограничена, так как он не поддерживает полнотекстовый поиск по регулярным выражениям для пользователей.
Важность для SEO
Влияние на SEO минимальное (1/10). Это инфраструктурный патент, направленный на повышение эффективности и скорости работы поисковой системы, а не на изменение принципов ранжирования, оценки качества или понимания контента. Он описывает, как Google решает внутренние инженерные задачи по снижению нагрузки и ускорению обработки специфических типов сложных запросов (регулярных выражений), которые не используются в стандартном веб-поиске.
Детальный разбор
Термины и определения
- Automaton (Автомат)
- Математическая абстракция (конечный автомат), используемая для представления регулярного выражения. Состоит из узлов (состояний) и ребер (переходов), включая начальный и конечные узлы.
- Backward Traversal (Обратный обход)
- Метод обхода автомата или дерева операторов, начиная с конечных узлов и двигаясь к начальному узлу. Ключевой элемент патента для эффективного использования суффиксного массива.
- High-Cost Recurring Query (Дорогой повторяющийся запрос)
- Запрос, который часто встречается в логах и требует значительных ресурсов для выполнения (например, из-за длительного времени обработки, большого количества просмотренных документов или запроса пользователем всех результатов).
- Loop Unrolling (Развертывание цикла)
- Техника преобразования автомата для обработки операторов повторения в Regex (например, * или +), которые создают циклы. Цикл разворачивается определенное количество раз (возможно, динамически) для возможности обратного обхода.
- Offline Query Processor (Офлайн-процессор запросов)
- Компонент, который обновляет Prepared Results во время индексации новых или измененных документов.
- Operator Tree (Дерево операторов)
- Альтернативный способ представления регулярного выражения, где внутренние узлы представляют операторы (например, конкатенация, повторение), а листья — символы.
- Prepared Results (Подготовленные результаты)
- Закэшированный набор результатов для идентифицированного High-Cost Recurring Query. В патенте подчеркивается, что эти результаты обновляются во время индексации.
- Prepend Operation (Операция prepend)
- Операция, используемая при обратном обходе. Она добавляет символ (или строку) к началу строк в заданном диапазоне суффиксного массива и возвращает новый диапазон, соответствующий результатам.
- Suffix Array (Суффиксный массив)
- Структура данных, представляющая собой отсортированный массив всех суффиксов корпуса документов. Позволяет быстро находить вхождения подстрок и паттернов.
Ключевые утверждения (Анализ Claims)
Патент содержит три основных независимых направления изобретения, связанных с оптимизацией регулярных выражений и обработкой дорогих запросов.
Claim 1 (Независимый пункт): Описывает метод префильтрации документов для запроса с регулярным выражением с использованием автомата.
- Получение регулярного выражения.
- Создание представления в виде автомата (automaton representation).
- Обход автомата от конечных узлов к начальному (traversing… from the termination nodes to the starting node) для определения диапазона суффиксного массива (suffix array range) для начального узла.
- Использование этого диапазона для идентификации релевантных документов.
Ядром является обратный обход автомата для вычисления диапазона в суффиксном массиве.
Claim 2 и 3 (Зависимые): Уточняют, что обратный обход использует операцию prepend для перемещения между узлами.
Claim 6 и 7 (Зависимые): Описывают обработку операторов повторения, которые создают циклы. Применяется «развертывание цикла» (unrolling the loop), что приводит к созданию нескольких конечных узлов. Развертывание может происходить динамически.
Claim 9 (Независимый пункт, Системный): Описывает систему, объединяющую оба направления.
- Идентификация дорогих повторяющихся запросов в логах.
- Хранение их параметров.
- При получении нового запроса: проверка совпадения с сохраненными дорогими запросами.
- Если совпадение есть: использование prepared results для генерации выдачи.
- Одновременно: проверка наличия регулярного выражения в запросе.
- Если есть: применение механизма из Claim 1 (автомат, обратный обход, суффиксный массив) для идентификации документов.
- Использование этих документов для генерации выдачи.
Claim 18 (Зависимый от 9): Ключевой аспект обновления кэша. При индексации документа система проверяет, соответствует ли он сохраненным дорогим запросам, и добавляет его в prepared results. Это происходит независимо от выполнения самого запроса (independently from execution of the particular query).
Claim 24 (Независимый пункт): Описывает альтернативный метод для регулярных выражений с использованием operator tree вместо автомата. Метод включает обход дочерних узлов в обратном порядке (traversing the child nodes in reverse order) для определения диапазона суффиксного массива корневого узла.
Где и как применяется
Изобретение затрагивает инфраструктурные компоненты поисковой системы, отвечающие за индексацию и обработку запросов.
INDEXING – Индексирование и извлечение признаков
- На этом этапе генерируется Suffix Array для корпуса документов.
- Offline Query Processor взаимодействует с индексатором. Когда появляется новый или обновленный документ, этот процессор проверяет его на соответствие сохраненным High-Cost Queries и обновляет соответствующие Prepared Results (кэш).
(Офлайн-процессы / Анализ данных)
- Log Analyzer периодически анализирует Log Files для идентификации новых дорогих повторяющихся запросов и обновления списка High-Cost Queries на основе метрик выполнения.
RANKING – Ранжирование (Этап Retrieval/Отбор Кандидатов)
- Если запрос содержит регулярное выражение, активируется Automaton Module.
- Он строит автомат или дерево операторов и выполняет обратный обход, используя Suffix Array.
- Это действует как эффективный префильтр (prefilter) для быстрого определения набора документов-кандидатов.
RERANKING / METASEARCH – Переранжирование и Смешивание
- Query Processor проверяет, соответствует ли входящий запрос одному из High-Cost Queries.
- Если да, он извлекает Prepared Results.
- Система может использовать эти результаты для немедленного показа первой страницы, одновременно выполняя запрос в фоновом режиме. Затем результаты могут быть смешаны (Blend the prepared results with the executed results).
На что влияет
- Типы контента и Ниши: Патент явно указывает на применение для поиска по исходному коду (Source Code Searching). Также упоминаются другие большие корпусы, где поддерживаются регулярные выражения, например, репозитории ДНК или библиотечные коллекции. Влияние на стандартный веб-контент (статьи, товары) отсутствует, так как веб-поиск обычно не поддерживает полный поиск по Regex для пользователей.
- Специфические запросы: Влияет на запросы, содержащие регулярные выражения, и на запросы, которые были классифицированы как High-Cost Recurring Queries.
Когда применяется
Алгоритмы применяются при выполнении следующих условий:
- Триггер 1 (Кэширование): Когда параметры входящего запроса точно совпадают с параметрами запроса, ранее сохраненного в базе High-Cost Queries.
- Триггер 2 (Regex): Когда входящий запрос содержит регулярное выражение.
- Триггер 3 (Обновление кэша): Когда в индекс добавляется новый документ или обновляется существующий.
- Пороги (для идентификации High-Cost): Запрос должен превышать пороги частоты (например, >3 раз за период) И стоимости (например, поиск по >75% документов, превышение порога времени выполнения, или запрос «всех результатов»).
Пошаговый алгоритм
Процесс А: Обработка запроса в реальном времени
- Получение запроса: Система получает запрос от пользователя.
- Проверка на High-Cost Query: Система определяет, является ли запрос дорогим повторяющимся запросом путем сравнения с базой сохраненных запросов.
- Обработка High-Cost Query (Если ДА):
- Система извлекает Prepared Results из хранилища.
- Система может немедленно вернуть первую страницу результатов из кэша.
- Параллельно может быть запущен процесс выполнения запроса в реальном времени (опционально).
- Обработка Стандартного Запроса (Если НЕТ) или фоновое выполнение:
- Система проверяет наличие регулярного выражения в запросе.
- Если Regex ЕСТЬ:
- Создается автомат или дерево операторов для Regex.
- Развертываются повторяющиеся термины (unrolling loops) для устранения обратных ребер (оптимизация).
- Выполняется обратный обход структуры (от конечных узлов к начальному).
- На каждом шаге используется операция prepend для вычисления диапазонов в Suffix Array.
- Определяется финальный диапазон Suffix Array для начального узла (префильтрация).
- Если Regex НЕТ: Стандартный поиск по индексу.
- Выполнение поиска: Поиск выполняется по отобранным кандидатам.
- Смешивание результатов (Если применимо): Prepared Results смешиваются с результатами выполнения в реальном времени.
- Возврат результатов: Результаты возвращаются пользователю.
Процесс Б: Управление кэшем (Офлайн и Индексация)
- Анализ логов (Периодически): Log Analyzer анализирует логи, идентифицирует новые High-Cost Recurring Queries по порогам частоты и стоимости, и удаляет неактуальные. Инициализирует Prepared Results для новых запросов.
- Обновление при индексации (Постоянно): При индексации нового или обновленного документа Offline Query Processor проверяет его на соответствие всем сохраненным High-Cost Queries. При наличии совпадений соответствующие Prepared Results обновляются.
Какие данные и как использует
Данные на входе
- Параметры запроса: Текст запроса, включая регулярные выражения, если они присутствуют.
- Системные данные:
- Log Files: Журналы выполнения запросов. Используются для идентификации дорогих повторяющихся запросов. Содержат данные о времени выполнения, количестве обработанных документов, запросах на показ всех результатов.
- Document Corpus: Исходные данные для индексации.
- Suffix Array: Предварительно рассчитанная структура данных корпуса, используемая для оптимизации Regex.
- High Cost Queries: База данных параметров дорогих запросов.
- Prepared Results: Кэш результатов.
Какие метрики используются и как они считаются
Патент фокусируется на метриках производительности и эффективности:
- Критерии High-Cost Query:
- Количество обработанных документов: Сравнивается с порогом (например, 75% корпуса или фиксированное число).
- Запрос всех результатов: Фиксация факта, что пользователь запросил все результаты, а не только лучшие совпадения.
- Время выполнения запроса: Сравнивается с предустановленным порогом времени для определения всех релевантных документов.
- Suffix Array Range (Диапазон суффиксного массива): Основная метрика при обработке Regex. Вычисляется путем обратного обхода автомата с использованием операции prepend.
- Dynamic Unrolling Threshold (Порог динамического развертывания): При обработке циклов в Regex система сравнивает размер диапазона Suffix Array между итерациями развертывания. Если уменьшение диапазона незначительно (например, менее 10% за несколько итераций), процесс останавливается для экономии ресурсов.
- Оптимизация интервалов: Если диапазон Suffix Array состоит из слишком большого числа маленьких интервалов, система может объединять соседние интервалы, включая промежутки между ними (merging neighboring intervals), чтобы сократить общее число интервалов и ускорить обработку.
Выводы
- Фокус на инфраструктуре и эффективности: Патент полностью посвящен оптимизации производительности и снижению вычислительных затрат в специализированных поисковых системах. Он не предлагает новых методов оценки релевантности, качества контента или сигналов ранжирования.
- Эффективная обработка Regex: Google разработал высокооптимизированный метод для поиска по регулярным выражениям, использующий суффиксные массивы и обратный обход автоматов. Этот метод превосходит традиционные подходы (например, prefilter trees) по эффективности и точности префильтрации.
- «Умное» кэширование (Live Caching): Внедрение механизма обновления кэша (Prepared Results) непосредственно в процесс индексации является ключевой оптимизацией. Это позволяет поддерживать актуальность результатов для дорогих повторяющихся запросов без необходимости их повторного выполнения.
- Ограниченное применение в веб-поиске: Описанные механизмы предназначены для систем (поиск по исходному коду), где поддерживается поиск по регулярным выражениям и часто требуется получение полного набора результатов. В стандартном веб-поиске Google эти методы напрямую не применяются в том же виде.
- Отсутствие практической ценности для SEO: Для SEO-специалистов этот патент не несет практической ценности в плане разработки стратегий продвижения.
Практика
Best practices (это мы делаем)
Патент описывает внутренние процессы Google, связанные с инфраструктурой и обработкой специфических типов запросов (регулярных выражений), которые не поддерживаются в стандартном веб-поиске. Прямых рекомендаций для SEO-специалистов, работающих над продвижением веб-сайтов, данный патент не дает.
Worst practices (это делать не надо)
Патент не описывает механизмов борьбы с SEO-манипуляциями или оценки качества контента. Следовательно, он не выделяет каких-либо SEO-тактик как неэффективных или опасных.
Стратегическое значение
Стратегическое значение патента для SEO минимально. Однако он дает представление о высоком уровне инженерных компетенций Google в области создания эффективной поисковой инфраструктуры, способной обрабатывать экстремальные нагрузки и сложные типы запросов (сопоставление с образцом в больших масштабах). Это подтверждает, что Google уделяет значительное внимание снижению задержек (latency) и оптимизации вычислительных ресурсов.
Практические примеры
Практических примеров применения данного патента в работе SEO-специалиста нет, так как стандартные задачи SEO не связаны с оптимизацией под запросы, использующие регулярные выражения, или с механизмами внутреннего кэширования Google.
Вопросы и ответы
Означает ли этот патент, что Google поддерживает поиск по регулярным выражениям в веб-поиске?
Нет. Патент явно указывает, что он предназначен для «более эффективного поиска по исходному коду» (Source Code Searching) и других специализированных корпусов. В патенте отмечается, что большинство веб-поисковиков не поддерживают полный поиск по регулярным выражениям из-за его высокой вычислительной стоимости.
Что такое суффиксный массив (Suffix Array) и почему он важен?
Suffix Array — это структура данных, которая хранит все возможные суффиксы (окончания) текста в отсортированном порядке. Это позволяет системе очень быстро находить все вхождения определенной подстроки или паттерна в огромном корпусе документов. В контексте патента он используется для радикального ускорения поиска по регулярным выражениям.
Что такое «дорогой повторяющийся запрос» (High-Cost Recurring Query)?
Это запрос, который пользователи задают часто и который требует от поисковой системы значительных ресурсов для ответа. Критериями дороговизны могут быть долгое время выполнения, необходимость анализа большого процента документов в индексе или ситуация, когда пользователь запрашивает абсолютно все результаты, а не только Топ-10.
Как Google поддерживает актуальность кэшированных результатов согласно патенту?
Патент описывает механизм «живого» кэширования. Вместо того чтобы пересчитывать кэш по расписанию или при запросе, система обновляет его непосредственно во время индексации. Когда новый документ добавляется в индекс, Offline Query Processor сразу проверяет, соответствует ли он какому-либо из сохраненных дорогих запросов, и обновляет кэш (Prepared Results).
Влияет ли этот патент на ранжирование моего сайта?
Нет. Этот патент не описывает сигналы ранжирования, алгоритмы оценки качества или методы понимания контента. Он посвящен исключительно инфраструктурной эффективности — как быстрее обрабатывать сложные запросы и снижать нагрузку на серверы.
Где Google может использовать эту технологию поиска по регулярным выражениям?
Хотя патент сфокусирован на поиске исходного кода, подобные технологии эффективного сопоставления с образцом могут использоваться во внутренних инструментах Google, в аналитических сервисах (например, BigQuery) или специализированных базах данных. Патент также упоминает репозитории ДНК и библиотечные коллекции как возможные области применения.
В чем основная инновация патента по обработке Regex?
Основная инновация заключается в использовании обратного обхода (Backward Traversal) автомата или дерева операторов. Вместо того чтобы двигаться от начала паттерна к концу, система движется от конца к началу, используя операцию prepend для эффективного вычисления диапазонов в Suffix Array. Это значительно ускоряет префильтрацию.
Что означает «развертывание цикла» (unrolling the loop) в автомате?
Регулярные выражения часто содержат операторы повторения (например, * или +), которые создают циклы в автомате. Поскольку обратный обход плохо работает с циклами, система «развертывает» их, заменяя цикл несколькими последовательными состояниями. Это позволяет точнее рассчитать диапазон в суффиксном массиве.
Связан ли этот патент со скоростью сайта как фактором ранжирования?
Нет. Этот патент связан со скоростью внутреннего процессинга запросов самим Google (снижение задержки ответа поисковой системы), а не со скоростью загрузки внешних веб-сайтов.
Что патент говорит о Prefilter Trees?
Патент позиционирует Prefilter Trees как существующий, но неэффективный метод обработки Regex. Утверждается, что они могут терять информацию о порядке операторов, игнорировать некоторые операторы (типа ? и *) и могут разрастаться экспоненциально, создавая узкие места в производительности. Предложенный метод с Suffix Array призван решить эти проблемы.