1c полнотекстовый поиск. Полнотекстовый поиск и его возможности

3.4.9 полнотекстовый поиск: Автоматизированный документальный поиск, при котором в качестве поискового образа документа используется его полный текст или существенные части текста (англ. Full text searching , фр. Recherche en texte integral )

Полнотекстовый индекс

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

Примечания

См. также


Wikimedia Foundation . 2010 .

Смотреть что такое "Полнотекстовый поиск" в других словарях:

    Автоматизированный информационный поиск, при котором в качестве поискового образа документа используется его полный текст или существенные части текста. По английски: Full text searching См. также: Автоматизированный информационный поиск… … Финансовый словарь

    полнотекстовый поиск - Автоматизированный документальный поиск, при котором в качестве поискового образа документа используется его полный текст или существенные части текста. [ГОСТ 7.73 96 ] Тематики поиск и распространение информации Обобщающие термины информационный … Справочник технического переводчика

    полнотекстовый поиск - 3.4.9 полнотекстовый поиск: Автоматизированный документальный поиск, при котором в качестве поискового образа документа используется его полный текст или существенные части текста en Full text searching fr Recherche en texte integral Источник …

    полнотекстовый поиск - Rus: полнотекстовый поиск Eng: full text searching Fra: recherche en texte integral Автоматизированный документальный поиск, при котором в качестве поискового образа документа используется его полный текст или существенные части текста. ГОСТ 7.73 … Словарь по информации, библиотечному и издательскому делу

    ПОЛНОТЕКСТОВЫЙ ПОИСК - согласно ГОСТ 7.73–96 «Поиск и распространение информации. Термины и определения», – автоматизированный документальный поиск, при котором в качестве поискового образа документа используется его полный текст или существенные части текста … Делопроизводство и архивное дело в терминах и определениях

    Поиск данных раздел информатики, изучающий алгоритмы для поиска и обработки информации как в структурированных (см. напр. базы данных) так и неструктурированных (напр., текстовый документ) данных. Поиск данных неразрывно связан с понятием… … Википедия

    Информационный поиск (ИП) (англ. Information retrieval) процесс поиска неструктурированной документальной информации и наука об этом поиске. Содержание 1 История 2 Информационный поиск как процесс … Википедия

    - (англ. Information retrieval) процесс поиска неструктурированной документальной информации, удовлетворяющей информационные потребности (англ.)русск., и наука об этом поиске … Википедия

    ГОСТ 7.73-96: Система стандартов по информации, библиотечному и издательскому делу. Поиск и распространение информации. Термины и определения - Терминология ГОСТ 7.73 96: Система стандартов по информации, библиотечному и издательскому делу. Поиск и распространение информации. Термины и определения оригинал документа: 3.2.5 автоматизированная информационно поисковая система: ИПС,… … Словарь-справочник терминов нормативно-технической документации

Книги

  • История Византии. Хрестоматия. Часть 2. Исторические документы и исследования (DVD) , Мартов Владимир , Издательство "Директмедиа Паблишинг" выпускает новую серию "Клио", представляющую собой ряд изданий по всемирной истории. Открывают серию хрестоматии по истории Византии - "Историки Византии"… Категория: История. Мультимедиа Издатель:

Механизм полнотекстового поиска

Основные возможности полнотекстового поиска

  • поддержка транслитерации (написание русских слов символами латиницы в соответствии с ГОСТ);
  • поддержка замещения (написание части символов в русских словах одноклавишными латинскими символами);
  • возможность нечеткого поиска (буквы в найденных словах могут отличаться) с указанием порога нечеткости;
  • возможность указания области выполнения поиска по выбранным объектам метаданных;
  • представление результатов поиска в формате XML и HTML с выделением найденных слов;
  • полнотекстовое индексирование названий стандартных полей ("Код", "Наименование" и т.д.) на всех языках конфигурации;
  • выполнение поиска с учетом синонимов русского, английского и украинского языков;
  • морфологический словарь русского языка содержит ряд специфических слов, относящихся к областям деятельности, автоматизируемым с помощью системы программ 1С:Предприятие;
  • возможность использования дополнительных словарей полнотекстового поиска;
  • в состав поставляемых словарей включены словарные базы и словари тезауруса и синонимов русского, украинского и английского языков, предоставленные компанией "Информатик".

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

Механизм полнотекстового поиска в данных системы 1С:Предприятие 8 позволяет осуществлять поиск в базе данных с указанием поисковых операторов (И, ИЛИ, НЕ, РЯДОМ и др.).

Механизм полнотекстового поиска основан на использовании двух составляющих:

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

Создание и обновление полнотекстового индекса может быть выполнено интерактивно, в режиме 1С:Предприятие 8, или программно, средствами встроенного языка. Ниже приведен диалог управления полнотекстовым индексированием в режиме 1С:Предприятие:

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

В представленном примере найдены документы, реквизиты которых содержат значения, начинающиеся на "Компл" и "вент" - контрагент "Комплетк ТД" и реквизиты, содержащие различные формы слова "вентилятор".

Система 1С:Предприятие 8 позволяет осуществлять выборочное включение данных прикладных объектов и их реквизитов в полнотекстовый поиск. Также существует возможность ограничить область поиска данными только указанных объектов конфигурации.

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

В справочной системе 1С:Предприятия 8 также реализован полнотекстовый поиск, позволяющий использовать поисковые операторы И, ИЛИ, НЕ, РЯДОМ и др.. При этом найденные слова выделяются.

Программный интерфейс

Используются следующие прикладные объекты:

  • МенеджерПолнотекстовогоПоиска
  • СписокПолнотекстовогоПоиска
  • ЭлементСпискаПолнотекстовогоПоиска

МенеджерПолнотекстовогоПоиска имеет методы для построения индекса поиска, проверки его актуальности, а также создания списка поиска типа СписокПолнотекстовогоПоиска по заданному запросу.

МенеджерПолнотекстовогоПоиска доступен как свойство глобального контекста ПолнотекстовыйПоиск.

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

Результатом поиска является ЭлементСпискаПолнотекстовогоПоиска.

Операторы строки поиска

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

И (AND или #) - поиск данных, содержащих все слова; пример: "запись И документ" - в реквизитах должны быть и "проведение" и "документ" (с учетом морфологии);

ИЛИ (OR или | или,) - поиск хотя бы одного слова из перечисленных; пример: "запись ИЛИ документ" - в реквизитах должно быть хотя бы одно из слов "запись" или "документ";

НЕ (NOT или ~) - поиск данных, в реквизитах которых есть первое слово, но нет второго; пример: "закрытие НЕ месяц" - будут найдены все, содержащие "закрытие", но не содержащие слова "месяц". Использование "~" в начале строки не допускается;

РЯДОМ/n (NEAR/[+/-]n) - поиск данных, содержащих в одном реквизите указанные слова с учетом морфологии на расстоянии n слов между словами.

Знак указывает, в каком направлении от первого слова будет искаться второе слово ("+" – после первого; "-" – до первого слова).

Если знак не указан, то будет найдены данные, содержащие указанные слова на дистанции n слов друг о друга.

Порядок слов не имеет значения.

  • "фен РЯДОМ/3 воздух" - будут найдены данные, в которых "воздух" находится не более 3-х слов до или после "фен";
  • фен РЯДОМ/+3 воздух - будут найдены данные, в которых "воздух" находится не более 3-х слов после "фен";
  • фен РЯДОМ/-3 воздух - будут найдены данные, в которых "воздух" находится не более 3-х слов перед "фен".

РЯДОМ(NEAR) - упрощенный оператор дистанции: оба слова расположены не далее, чем в 8-ми словах друг от друга; пример: "проведение РЯДОМ документ";

"" (текст в кавычках) - поиск точной с учетом морфологии фразы, пример: "проведение документа" - эквивалентно: проведение /1 документа;

() - группировка слов (сколько угодно уровней вложенности); пример: "(проведение | выписка) # (счета, документа)";

* - поиск с использованием группового символа (замена окончания слова). Должно быть введено более 1 значащего символа; пример: "доку*" - найдет "документ", "документировать", "документальный" и др.;

# - нечеткий поиск слов с заданным количеством отличий от указанного (если не указано, то = 1); пример: запрос "#Система" найдет "систама", "сивтема"; запрос "Система#2" найдет "ситтама", "сеттема";

Поиск с учетом синонимов русского, английского и украинского языков. "!" ставится перед соответствующим словом; пример: поиск "!красный кафель", найдет еще и "алый кафель" и "коралловый кафель".

Если не указано никаких операторов (слова набраны через пробел), то программа осуществляет поиск всех слов из запроса с использованием оператора И.

Примеры

СписокПоиска = ПолнотекстовыйПоиск.СоздатьСписок("", 20); СписокПоиска.ПолучатьОписание = Истина;

МассивМД = Новый Массив(); МассивМД.Добавить(Метаданные.Справочники.Товары); МассивМД.Добавить(Метаданные.Документы.КассовыйЧек);

СписокПоиска.ОбластьПоиска = МассивМД; СписокПоиска.СтрокаПоиска = ПолеВводаПоиска; СписокПоиска.РазмерПорции = РазмерПорции; СписокПоиска.ПерваяЧасть();

Если СписокПоиска.ПолноеКоличество() = 0 Тогда Если СписокПоиска.СлишкомМногоРезультатов() Тогда Предупреждение("Слишком много результатов, уточните запрос."); КонецЕсли; Возврат; КонецЕсли;

Колво = СписокПоиска.ПолноеКоличество();

СтрHTML = СписокПоиска.ПолучитьОтображение(ВидОтображенияПолнотекстовогоПоиска.HTMLТекст); Сообщить(СтрHTML);

Для каждого индекс=0 По СписокПоиска.Количество-1 Цикл элемент = СписокПоиска.Получить(индекс); Сообщить(элемент.Представление); КонецЦикла;

Особенности

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

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

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

Функциональность нового поиска основана на двух механизмах:
- полнотекстовый поиск (работает очень быстро и требует минимум вычислительных ресурсов);
- поиск средствами СУБД (в общем случае длительность поиска и затраты вычислительных ресурсов пропорциональны объему информации в таблице).

В текущей реализации поиск в списке будет осуществляться без использования полнотекстового поиска в следующих случаях ():
- полнотекстовый индекс выключен на уровне информационной базы;
- объект основной таблицы не индексируется полнотекстовым индексом;
- в результате поиска с помощью полнотекстового поиска, была получена ошибка.

Если же полнотекстовый поиск включен в информационной базе, а индекс не обновлен совсем или частично (из моей практики 95% информационных баз Заказчиков), то пользователь при поиске получит либо недостоверный, либо пустой результат поиска.

Спрашиваем у Фирмы 1С - как быть? как гарантировать достоверность результатов поиска всегда?
Получаем ответ: Да, для того, чтобы результаты поиска при включенном полнотекстовом поиске были актуальными, нужно следить за тем, чтобы индекс полнотекстового поиска был актуальным.Других вариантов эффективного и актуального поиска пока нет ().

А существует ли вообще "актуальный полнотекстовый индекс"? Зависит от числа пользователей, интенсивности изменения информации в базе и частоты запуска обновления индекса. Обычно обновление индекса запускают раз в 60 секунд. Хорошо, если объектов было изменено не много, и процедура успела обработать все изменения за эти 60 секунд. А если сделали перепроведение группы документов, или массовую перезапись справочника? В этом случае никто не может гарантировать время, через которое поиск по индексу снова даст достоверные данные.
В принципе, это не особо критично, кроме нескольких ситуаций. Частый вариант работы пользователей - установить в списке отбор по какому-то значению, например "Контрагенту", ввести новый или скопировать существующий документ и записать. Со старым поиском новый документ моментально был виден в списке. Теперь пользователь его увидит только через N секунд в лучшем случае, где N скорее ближе к 50-60 секундам, нежели к 2-3.
Если не заметить, что нового документа нет и по отобранным результатам предоставить информацию кому-либо, то она будет заведомо недостоверной.

Это было в случае нормальной работы с информационной базой. А что будет в специфических ситуациях? Приведу пару примеров.
1) В рабочей базе полнотекстовый индекс включен и часто обновляется. Пользователь просит развернуть ему копию рабочей базы, что по ней заняться анализом данных.
Восстанавливаем бэкап и даем доступ. Вот только полнотекстовый поиск работать не будет, т.к. индекс хранится не в СУБД, а в отдельных файлах (и в файловом, и в клиент-серверном варианте). Индекса нет в dt-файле.
т.е. чтобы пользователь смог использовать поиск по спискам - надо выключить полнотекстовый индекс в этой базе. Правда пользователь будет слегка удивлен тому, что поиск будет выполняться гораздо дольше. Либо перестроить индекс по всей базе.

2) (Актуально для более менее больших баз). В рабочей базе полнотекстовый индекс включен и часто обновляется. Наступает конец месяца и начинается закрытие периода. Начинаем массово грузить и перепроводить документы. Для снижения нагрузки на систему блокируем выполнение регламентных заданий, соответственно, и обновление индекс останавливается. Пользователи будут, мягко говоря, в недоумении - чего же в списках нет новых или измененных документов. Единственный выход - отключить полнотекстовый поиск для информационной базы, и, соответственно, получить еще большую нагрузку на оборудование за счет тяжелого поиска по всем реквизитам.

Таким образом, как мне кажется, операция по обновлению индекса станет еще одной головной болью администраторов информационных баз.
Система, ранее гарантировавшая 100% достоверность и актуальность информации в любой момент, сейчас превращается скорее в справочную систему, в которой нельзя быть полностью уверенным.
А пользователи получают еще один повод для упрека ИТ-шников - "ваша система неправильно работает".



Загрузка...
Top