Полнотекстовые индексы в базе геоданных

Полнотекстовый индекс — это специализированный индекс, который хранит информацию об отдельных словах (токенах) и их расположении в текстовых полях. После создания полнотекстовый индекс позволяет быстро и эффективно искать определенные слова, фразы или выражения в текстовых ресурсах больших объемов.

Цель и преимущества полнотекстовых индексов

Основная цель полнотекстовых индексов — расширение возможностей быстрого и точного поиска и извлечения текстовых данных. Вот некоторые основные преимущества:

  • Эффективный текстовый поиск — полнотекстовые индексы могут обеспечить более быстрый поиск в текстовых полях по сравнению с обычными атрибутивными индексами. Это связано с тем, что они оптимизированы для операций текстового поиска, что снижает необходимость сканирования всей таблицы.
  • Возможности сложных запросов — полнотекстовые индексы поддерживают сложные запросы, такие как поиск фраз, поиск по близости и ранжирование результатов по релевантности.
  • Улучшенная производительность — индексируя текстовые данные, полнотекстовые индексы могут значительно повысить производительность поисковых операций. Это особенно важно для больших наборов данных, в которых текстовый поиск может быть ресурсоемким.
  • Поддержка нескольких полей — в SQL Server один полнотекстовый индекс может входить несколько полей из таблицы, что позволяет выполнять комплексный текстовый поиск по разным столбцам.

Чтобы пояснить преимущества использования полнотекстовых индексов, рассмотрим следующий пример:

Страница содержания показывает, где находится каждая глава. Если вы хотите найти главу 7, то вы можете проверить страницу содержания, перейти на эту страницу и найти то, что вам нужно. Если вы пытаетесь вспомнить важную цитату, в которой есть слово «человечество», но не знаете, в какой главе она находится, страница содержания вам не поможет. Если в книге нет полнотекстового индекса, вам придется пролистать все страницы, чтобы найти цитату. Полнотекстовый индекс содержит список всех слов в книге вместе с номерами страниц. Это позволяет быстро искать такие слова, как человечество, и даже находить фразы, например, «один гигантский шаг для человечества».

Рассмотрите возможность использования полнотекстовых индексов, если вам необходимо выполнить сложный текстовый поиск в текстовом поле. В частности, полнотекстовые индексы особенно полезны для следующего:

  • Поиск по одному слову — поиск отдельных слов в текстовом поле, например, ураган или Флорида.
  • Поиск фразы — поиск фразы, представляющей собой группу слов. Чтобы выполнить поиск по фразе, заключите группу слов в кавычки, например, «пути эвакуации».

Следующий сценарий является примером, иллюстрирующим полезность полнотекстовых индексов.

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

Газопроводная сеть коммунальных предприятий

Подробнее о создании инженерной сети и конфигурации газовой сети.

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

Сравнительную таблицу атрибутивных, полнотекстовых и пространственных индексов см. в разделе Индексы в базе геоданных.

Как работают полнотекстовые индексы

Полнотекстовые индексы — это мощный инструмент, помогающий быстро выполнять поиск в больших объемах текстовых данных. После создания полнотекстового индекса для поля, можно использовать текстовый поиск для быстрого и эффективного поиска в больших объемах текста по определенным словам, фразам или выражениям.

Текстовый поиск доступен в различных частях ArcGIS, включая следующие:

  • ArcGIS Portal Directory REST API — для запроса данных через веб-сервисы.
  • ArcObjects — для программного доступа и обработки данных ГИС.
  • Панель Найти местоположение – в ArcGIS Pro используйте панель Найти местоположение, чтобы применить режим полнотекстового поиска Полный текст начинается с или Полный текст равен к полю, по которому вы хотите выполнить поиск.
    Опции режима полнотекстового поиска при настройке вида Найти местоположение на панели Найти местоположение

Узнайте больше о режимах полнотекстового поиска и о том, как находить настроенные объекты или записи с помощью панели Найти местоположение

Внимание:

ArcGIS Pro предоставляет возможность создания очень простого полнотекстового индекса. Управление и настройка полнотекстового индекса должны выполняться вручную на уровне СУБД с использованием инструментов СУБД.

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

Таблица GIS.Storm_Damage_Assessment содержит несколько полей атрибутов, подробно описывающих тип, серьезность и описание повреждений, о которых сообщили домовладельцы после недавних штормов. Дополнительные поля, невидимые в этой таблице, включают адрес и контактную информацию владельцев недвижимости.

Таблица GIS.Storm_Damage_Assessment до применения полнотекстового индекса

Как страховой агент этих владельцев недвижимости, настройка полнотекстового индекса для поля Damage _Description позволит вам быстро находить ключевые термины, такие как Водосточные желоба, Черепица, Окно, Крыша или Протечки, чтобы вы могли порекомендовать владельцу здания наиболее подходящего подрядчика, к которому следует обратиться, исходя из конкретных повреждений и необходимых ремонтных работ.

  1. Создайте полнотекстовый индекс с помощью инструмента Добавить полнотекстовый индекс. В этом примере указаны имя таблицы, GIS.Storm_Damage_Assessment и поле, содержащие текстовые данные для индексации, Damage_Description.
    Добавление полнотекстового индекса для поля Damage_Description
  2. Заполнение индекса включает в себя разбиение текста в указанном поле на отдельные ключевые термины (токены), организацию, отслеживание и последующее сопоставление точного местоположения каждого слова с текстовым полем для быстрого доступа.

    Практический пример:
    На следующей иллюстрации смоделировано на высоком и упрощенном уровне, как полнотекстовый индекс разбивается на отдельные ключевые термины и как их местоположения сопоставляются с текстовым полем.

    В этом примере в таблице GIS.Storm_Damage_Assessment первое значение атрибута в строке 1 в поле Damage_Description имеет вид Отсутствующая или поднятая черепица. В качестве моделирования того, как будет заполняться этот полнотекстовый индекс, этот текст будет разбит на следующие ключевые термины, организованные в алфавитном порядке, и будет записано точное место, где каждый термин появляется в указанном текстовом поле Damage_Description.

    • Отсутствующая — встречается 4 раза в строках 1, 4, 8, 9
    • Поднятая — встречается дважды в строках 1 и 9
    • Черепица — встречается 6 раз в рядах 1, 3, 4, 5, 8, 9
    Полнотекстовый индекс
    Индекс служит глоссарием для всех ключевых терминов в индексируемом поле, организуя и отслеживая точное место, где каждое слово появляется, вплоть до исходного индекса.

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

  3. После завершения создания полнотекстового индекса поля Damage_Description, вы можете использовать панель Найти местоположение, чтобы применить режим полнотекстового поиска Полный текст равен к полю Damage_Description.

    На панели Найти местоположение установите для поля, содержащего полнотекстовый индекс, режим поиска Полный текст равен

  4. В этом примере с панели Найти местоположение можно выполнять поиск по слову Черепица.

    Без применения полнотекстового индекса поиск привел бы к более длительному полному сканированию таблицы. Однако, поскольку для поля Damage_Description был создан полнотекстовый индекс, на панели Найти местоположение можно сделать запрос к этому поле одного слова Черепица. Панель Найти местоположение использует полнотекстовый поиск для быстрого определения термина Черепица и находит все строки, в которых встречается этот ключевой термин, аналогично следующему.

    Результаты запроса по полнотекстовому индексу поля

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

Управление полнотекстовым индексом в ArcGIS

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

Примечание:

При использовании полнотекстовых индексов следует учитывать следующее:

  • Полнотекстовые индексы не поддерживаются в файловых базах геоданных или в многопользовательской базе геоданных в Db2.
  • Один или несколько индексов — некоторые РСУБД могут поддерживать только один полнотекстовый индекс на таблицу, в то время как другие могут допускать несколько.
  • Поддержка — полнотекстовые индексы должны поддерживаться базовым источником данных. Они обновляются с учетом изменений в данных, которые могут повлиять на эффективность поиска.

Полнотекстовые индексы в мобильных базах геоданных

Полнотекстовые индексы поддерживаются в мобильных базах геоданных. Мобильные базы геоданных хранятся в базе данных SQLite, и эта база данных изначально содержит расширение FTS5. Расширение SQLite FTS5 (полнотекстовый поиск) используется для полнотекстовой индексации в мобильных базах геоданных и создает виртуальные таблицы и дополнительные побочные таблицы для управления полнотекстовыми индексами. Это означает, что мобильные базы геоданных также изначально имеют расширение FTS5.

Полнотекстовые индексы в многопользовательских базах геоданных

ArcGIS Pro поддерживает полнотекстовые индексы для таблиц или классов объектов в базе геоданных на каждой из следующих поддерживаемых платформ систем управления базами данных, каждая из которых имеет определенные конфигурации:

  • Oracle
    • Поддерживает полнотекстовые индексы для текстовых полей не-Unicode.
    • Для индексации требуется преобразование полей Unicode в не-Unicode.
      Подсказка:

      Используйте инструмент Перенести текстовое поле для переноса существующих допустимых типов текстовых полей Unicode в не-Unicode. Входной набор данных должен быть из многопользовательской базы геоданных в Oracle, а подходящие типы текстовых полей Unicode, которые можно преобразовать в тип текстового поля не-Unicode, включают следующее:

      • NVARCHAR2 будет преобразован в VARCHAR2.
      • NCHAR будет преобразован в VARCHAR2.
      • NCLOB будет преобразован в CLOB.

  • PostgreSQL
    • Поддерживает создание одного полнотекстового индекса на поле.
  • SQL Server
    • Возможность полнотекстового поиска является дополнительным компонентом Database Engine SQL Server и должна быть включена перед выполнением следующих требований. Если функция полнотекстового поиска еще не включена на вашем экземпляре SQL Server, вам придется заново запустить процесс настройки SQL Server.
    • Полнотекстовый каталог SQL Server — это виртуальный контейнер для одного или нескольких полнотекстовых индексов. Используйте SQL Server для создания как минимум одного полнотекстового каталога в каждой базе данных SQL Server, где будут созданы полнотекстовые индексы.

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

    • Каждый пользователь, создающий полнотекстовые индексы, должен иметь разрешение REFERENCES, предоставленное для полнотекстового каталога, к которому будет принадлежать индекс.
    • SQL Server поддерживает создание одного полнотекстового индекса для каждой таблицы, который может включать несколько полей.
  • SAP HANA
    • Подобно PostgreSQL, поддерживает один полнотекстовый индекс на поле.

Добавить полнотекстовый индекс

Чтобы использовать инструмент Добавить полнотекстовый индекс для добавления полнотекстового индекса к указанным текстовым полям для поддержки поиска по отдельному столбцу или по нескольким столбцам в мобильной или многопользовательской базе данных, выполните следующие действия:

Примечание:

Инструмент Добавить полнотекстовый индекс не поддерживается в файловых базах геоданных или в многопользовательской базе геоданных в Db2.

  1. Откройте инструмент геообработки Добавить полнотекстовый индекс, перейдя на вкладку Анализ и щелкнув Инструменты в группе Геообработка. Кроме того, вы можете найти инструмент в наборе инструментов Инструменты управления данными на панели инструментов Индексы.
    Добавьте инструмент полнотекстового индекса на вкладку Анализ, Инструменты и Геообработка

    Диалоговое окно инструмента геообработки Добавить полнотекстовый индекс отображается с настройками по умолчанию.

    Диалоговое окно инструмента геообработки Добавить полнотекстовый индекс

  2. Для Входной таблицы в ниспадающем меню выберите один набор данных или используйте кнопку обзора Обзор, чтобы выбрать класс объектов или таблицу, к которой нужно добавить полнотекстовый индекс.
    Примечание:

    Более подробно об управлении полнотекстовым индексом в ArcGIS.

  3. В поле Поля для индексирования выберите одно или несколько полей, к которым будет применен полнотекстовый индекс.
    Параметр Поля для индексации
    Примечание:

    Некоторые базы данных поддерживают только одно поле для создания полнотекстового индекса. Поддержка создания полнотекстового индекса по многим полям зависит от базы данных.

  4. При необходимости имя этого параметра изменится в зависимости от источника вашей Входной таблицы.
    • Имя полнотекстового индекса — укажите имя индекса, который будет создан. Параметр Имя полнотекстового индекса отображается по умолчанию.
      Имя полнотекстового индекса
      Примечание:

      Для SQL Server, SQLite и мобильных баз геоданных параметр Имя полнотекстового индекса будет игнорироваться.

    • Имя полнотекстового каталога — выберите имя полнотекстового каталога SQL Server, которое вы хотите использовать для параметра Имя полнотекстового каталога. Опция Имя Полнотекстового каталога применима только для SQL Server.
      Имя полнотекстового каталога
      Примечание:

      Если Имя полнотекстового каталога не указано, инструмент попытается использовать полнотекстовый каталог по умолчанию, определенный для базы данных, если он доступен. В противном случае выберите полнотекстовый каталог из ниспадающего списка. Этот ниспадающий список содержит все полнотекстовые каталоги, к которым подключенный пользователь имеет доступ.

  5. Нажмите Запуск, чтобы добавить полнотекстовый индекс к полю.

    Примечание:

    Вы также можете выбрать Запланировать запуск, чтобы запустить инструмент в более позднее время с возможностью повторения, используя ниспадающее меню рядом с кнопкой Запустить.

    Запланировать запуск

    Дополнительные сведения о запуске инструментов геообработки по расписанию

После завершения работы инструмента Добавить полнотекстовый индекс в диалоговом окне свойств таблицы или класса объектов, на вкладке Индексы появится Имя полнотекстового индекса.

Когда обновлять полнотекстовый индекс

Полнотекстовые индексы поддерживаются РСУБД и должны периодически обновляться для отражения изменений в данных, гарантируя, что поисковые запросы будут возвращать точные результаты. Частота обновлений полнотекстового индекса будет зависеть от объема изменений, вносимых в данные, а также от конфигурации вашей базы данных. Управление, обновление и перестроение полнотекстовых индексов в многопользовательской базе геоданных будет осуществляться вручную на уровне СУБД с использованием инструментов СУБД.

Для мобильных баз геоданных расширение SQLite FTS5 (полнотекстовый поиск) позволяет выполнять эффективный полнотекстовый поиск путем создания виртуальной таблицы, которая автоматически обновляется при изменении базовых данных, устраняя необходимость в ручной перестройке индекса.

Связанные разделы