Поиск и словарь


НАЧАЛО >> Нативный провайдер данных DP_Irbis64Native >> Поиск и словарь📄 Скачать в DOCX


Поиск в DP_Irbis64Native основан на словаре и обратном индексе ИРБИС64. Провайдер читает термины из файлов словаря, получает postings из IFP и формирует список MFN для прикладных модулей.

1. Обычный поиск

Функции Search, SearchSrv, SearchMfn и RecSearch принимают поисковое выражение, разбирают его и получают список найденных MFN. Для прикладного пользователя это выглядит как обычный поиск ИРБИС 128, а на уровне провайдера выполняются операции со словарем и postings.

Типовой порядок:

  1. получить поисковое выражение;
  2. разобрать префиксы и операторы;
  3. найти соответствующие термины в словаре;
  4. прочитать postings из IFP;
  5. объединить или пересечь списки MFN по логике запроса;
  6. применить ограничения и сортировку;
  7. вернуть итоговый список.

2. Термины словаря

Для просмотра словаря используются:

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

3. Метки полей в ссылках словаря

Каждая ссылка термина на запись хранит не только MFN, но и координаты термина внутри записи: метку поля, номер повторения и позицию. Метка поля (pTag) берется из первой колонки правила FST, по которому сформирован термин. Поэтому для поиска по важным полям нужно задавать в FST отдельные правила с осмысленными метками этих полей, а не собирать разные поля одним общим правилом.

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

Для точечного ограничения термина по полям поддерживается уточнение последней частью термина: K=ИСТОРИЯ/200 или K=ИСТОРИЯ/200,210. Такое уточнение не меняет сам словарный термин, а фильтрует его postings по pTag. Если FST записала термин с общей служебной меткой, поиск не сможет отличить, из какого исходного поля был получен термин.

4. Фасеты и сортировка

Функция GetFasets строит группировки по найденному набору записей. Для сортировки используются SortMfnByPref, SortMfnBySrw и SavePostingListForSort. Размер сортируемого результата ограничивается настройкой MAX_SORT_COUNT, чтобы длинные поисковые выдачи не приводили к чрезмерной нагрузке.

5. Свободный поиск

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

6. Ограничения поиска

На объем операций влияют настройки:

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

7. Связь с актуализацией

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