Полнотекстовый поиск — позволит найти текстовую информацию, размещенную практически в любом месте используемой конфигурации. При этом искать нужные данные можно либо по всей конфигурации в целом, либо сузив область поиска до нескольких объектов (например, определенных видов документов или справочников). Сами критерии поиска могут варьироваться в довольно широком диапазоне. То есть найти нужные данные можно, даже не помня точно, где они хранятся в конфигурации и как именно записаны.
Полнотекстовый поиск предоставляет следующие возможности:
- Есть поддержка транслитерации (написание русских слов символами латиницы в соответствии с ГОСТ 7.79-2000). Пример: «русская фраза» = «russkaya fraza».
- Есть поддержка замещения (написание части символов в русских словах одноклавишными латинскими символами). Пример: «руссrfz фраpf» (окончания каждого слова набраны латиницей, допустим, в результате ошибки оператора).
- Есть возможность нечеткого поиска (буквы в найденных словах могут отличаться) с указанием порога нечеткости. Пример: указав в строке поиска слово «привет» и нечеткость 17 %, найдем все аналогичные слова с ошибками и без: «привет», «превет», «привед».
- Есть возможность указать область выполнения поиска по выбранным объектам метаданных.
- Полнотекстовое индексирование названий стандартных полей («Код», «Наименование» и т. д.) производится на всех языках конфигурации.
- Поиск выполняется с учетом синонимов русского, английского и украинского языков.
- Морфологический словарь русского языка содержит ряд специфических слов, относящихся к областям деятельности, автоматизируемым с помощью системы программ «1С:Предприятие».
- Стандартно в состав поставляемых словарей включены словарные базы и словари тезауруса и синонимов русского, украинского и английского языков, которые предоставлены компанией «Информатик».
- Поиск можно осуществлять с использованием подстановочных символов («*»), а также с указанием поисковых операторов («И», «ИЛИ», «НЕ», «РЯДОМ») и спецсимволов.
Полнотекстовый поиск можно осуществлять в любой конфигурации на платформе 1С:Предприятие 8
Для того чтобы открыть окно управления полнотекстовым поиском необходимо выполнить следующее:
Обычное приложение — пункт меню Операции — Управление полнотекстовым поиском.
Управляемое приложение — пункт меню Главное меню — Все функции — Стандартные — Управление полнотекстовым поиском.
- Обновить индекс – Создание индекса/Обновление индекса;
- Очистить индекс – обнуление индекса(рекомендуется после обновления всех данных);
- пункт Разрешить слияние индексов – отвечает за слияние основного и дополнительного индекса.

Как вы можете заметить свойство Использовать установлено для всего справочника Контрагенты, но сделать это можно и для каждого его реквизита соответствующего типа.
Рассмотрим более подробно полнотекстовый индекс, который состоит из двух частей (индексов): основного индекса и дополнительного. Высокая скорость поиска данных обеспечивается за счет основного индекса, но обновление его происходит относительно медленно, в зависимости от объема данных. Дополнительный индекс ему противоположен. Данные добавляются в него намного быстрее, но поиск осуществляется медленнее. Система осуществляет поиск одновременно в обоих индексах. Большая часть данных находится в основном индексе, а данные добавляемые в систему попадают в дополнительный индекс. Пока объем данных в дополнительном индексе небольшой, поиск по нему происходит относительно быстро. В тот момент, когда нагрузка на систему невелика, происходит операция слияния индексов, в результате чего дополнительный индекс очищается, а все данные помещаются в основной индекс. Слияние индексов предпочтительнее выполнять в тот момент времени, когда нагрузка на систему минимальна. С этой целью можно создавать регламентированные задания и задания по расписанию.
Специальные операторы, допустимые при задании поискового выражения
Механизм полнотекстового поиска допускает написание части символов русского слова одноклавишными латинскими символами. Результат поиска при этом не измениться.
Два оператора РЯДОМ
- упрощенный. На расстоянии 8 слов друг от друга
- РЯДОМ/[+/-]n – поиск данных в одном реквизите на расстоянии n-1 слов между ними.
Знак указывает в каком направлении от первого слова будет поиск второго. (+ — после, — до)
Групповой символ «*» может использоваться только в качестве замены конца слова
Оператор нечеткости «#». Если неизвестно точное написание названия, имени.
Программными средствами и средствами 1с: программирование.
Оператор синонимов «!». Позволяет найти слово и его синонимы
Как программно обновить индекс полнотекстового поиска?
Код 1C v 8.х
Процедура ОбновлениеИндексы() Экспорт
ПолнотекстовыйПоиск.ОбновитьИндекс();
КонецПроцедуры
Пример полнотекстового поиска данных
Определение переменной СписокПоиска
Код 1C v 8.х
Перем СписокПоиска;
Кроме этого в процедуре обработки события ПриОткрыии формы определим, что эта переменная будет содержать список полнотекстового поиска, с помощью которого мы и будем осуществлять поиск в данных
Код 1C v 8.х
Процедура ПриОткрытии()
СписокПоиска = ПолнотекстовыйПоиск.СоздатьСписок();
КонецПроцедуры
Теперь для события нажатия на кнопку Найти напишем код, который позволит нам выполнять поиск в соответствии с тем выражением, которое задано в поле ПоисковоеВыражение
Код 1C v 8.х
Процедура НайтиНажатие(Элемент)
СписокПоиска.СтрокаПоиска = ПоисковоеВыражение;
Попытка
СписокПоиска.ПерваяЧасть();
Исключение
Предупреждение(ОписаниеОшибки());
КонецПопытки;
Если СписокПоиска.ПолноеКоличество() = 0 Тогда
ЭлементыФормы.СообщениеОРезультате.Значение = "Не найдено";
ЭлементыФормы.РезультатПоиска.УстановитьТекст("");
Иначе
ВывестиРезультатПоиска();
КонецЕсли;
КонецПроцедуры
Сначала в этой процедуре мы устанавливаем поисковое выражение, введенное пользователем, в качестве строки поиска для полнотекстового поиска. Затем выполняем метод ПерваяЧасть(), который собственно запускает полнотекстовый поиск и возвращает первую порцию результатов. По умолчанию порция содержит 20 элементов. После этого мы анализируем количество элементов в списке поиска. Если он не содержит ни одного элемента, то мы выводим в форму соответствующее сообщение. В противном случае вызывается процедура ВывестиРезультатПоиска(), которая отображает полученные результаты пользователю.
Создадим в модуле формы процедуру с таким именем и напишем в ней код,
Код 1C v 8.х
Процедура ВывестиРезультатПоиска()
ЭлементыФормы.СообщениеОРезультате.Значение = "Показаны " + Строка(СписокПоиска.НачальнаяПозиция() + 1) + " - " + Строка(СписокПоиска.НачальнаяПозиция() +СписокПоиска.Количество()) + " из " + СписокПоиска.ПолноеКоличество();
Результат = СписокПоиска.ПолучитьОтображение(ВидОтображенияПолнотекстовогоПоиска.HTMLТекст);
ЭлементыФормы.РезультатПоиска.УстановитьТекст(Результат);
ДоступностьКнопок();
КонецПроцедуры
Действия, выполняемые в этой процедуре, просты. Сначала мы формируем сообщение о том, какие элементы отображены и сколько всего элементов найдено. Затем получаем результат полнотекстового поиска в виде HTML-текста и выводим этот текст в поле HTML-документа, расположенное в форме.
В заключение передаем управление в процедуру ДоступностьКнопок() для того, чтобы сделать доступными или, наоборот, запретить доступ к кнопкам Предыдущая порция и Следующая порция (в зависимости от того, какая порция полученных результатов отображена). Текст этой процедуры представлен в Коде
Код 1C v 8.х
Процедура ДоступностьКнопок()
ЭлементыФормы.СледующаяПорция.Доступность = (СписокПоиска.ПолноеКоличество() - СписокПоиска.НачальнаяПозиция()) > СписокПоиска.Количество();
ЭлементыФормы.ПредыдущаяПорция.Доступность = (СписокПоиска.НачальнаяПозиция() > 0);
КонецПроцедуры
Теперь необходимо создать обработчики событий нажатия на кнопки ПредыдущаяПорция() и СледующаяПорция().
Код 1C v 8.х
Процедура ПредыдущаяПорцияНажатие(Элемент)
СписокПоиска.ПредыдущаяЧасть();
ВывестиРезультатПоиска();
КонецПроцедуры
Процедура СледующаяПорцияНажатие(Элемент)
СписокПоиска.СледующаяЧасть();
ВывестиРезультатПоиска();
КонецПроцедуры
Заключительным «штрихом» будет создание обработчика события onclick поля HTML-документа, расположенного в форме. Дело в том, что результат полнотекстового поиска, представленный в виде HTML-текста, содержит гиперссылки на номера элементов списка поиска. И нам хотелось бы, чтобы при переходе пользователя на эту ссылку система открывала бы форму того объекта, который содержится в этом элементе списка. Для этого мы будем перехватывать событие onclick HTML-документа, содержащегося в поле HTML-документа, получать номер элемента списка из гиперссылки и открывать форму соответствующего объекта. Текст обработчика события onclick поля HTML-документа представлен в коде
Код 1C v 8.х
Процедура РезультатПоискаonclick(Элемент, pEvtObj)
htmlElement = pEvtObj.srcElement;
// Проверить идентификатор элемента
Если (htmlElement.id = "FullTextSearchListItem") Тогда
// Получить имя файла (номер строки списка поиска),
// содержащегося в гиперссылке
НомерВСписке = Число(htmlElement.nameProp);
// Получить строку списка поиска по номеру
ВыбраннаяСтрока = СписокПоиска[НомерВСписке];
// Открыть форму найденного объекта
ОткрытьЗначение(ВыбраннаяСтрока.Значение);
pEvtObj.returnValue = Ложь;
КонецЕсли;
КонецПроцедуры
Механизм полнотекстового поиска позволяет быстро находить нужную информацию в данных информационной базы и в справочной системе. Подробнее о работе механизма: http://about1cerp.blogspot.ru/2016/11/blog-post_32.html
Словарь полнотекстового поиска по понятным причинам содержит не все возможные слова; если его нужно расширить какой-то отраслевой терминологией, то можно добавить дополнительные словари. Для этого их нужно завести либо как макеты из двоичных данных или текстовые макеты, либо как константы строкового типа или типа хранилище значений. Далее на созданный словарь нужно сослаться в свойстве Дополнительные словари полнотекстового поиска корня конфигурации:
***
Вопрос 01.54 экзамена 1С:Профессионал по платформе. При необходимости внести в механизм полнотекстового поиска свой
дополнительный словарь (синонимы, специфичные для какого-либо рода деятельности) его можно включить в конфигурацию:
- как константу
- как общий макет
- как параметр сеанса
- верны ответы 1,2
- верны ответы 1,2,3
Правильный ответ четвертый, можно как общий макет или константу.
***
Вопрос 01.03 экзамена 1С:Профессионал по платформе. В механизме полнотекстового поиска для поиска с учетом синонимов слова «алый» используется выражение:
- !алый
- ‘алый’
- (алый)
- «алый»
***
Вопрос 01.18 экзамена 1С:Профессионал по платформе. Для нечеткого поиска данных (с одной ошибкой) в механизме полнотек-
стового поиска используется выражение:
- !манолит
- #манолит
- манолит*
- «манолит»
Содержание
- 1 Механизм полнотекстового поиска
- 1.1 Основные возможности полнотекстового поиска
- 1.2 Полнотекстовый поиск в базе данных
- 1.3 Полнотекстовый поиск в справочной системе
- 2 Программный интерфейс
- 2.1 Операторы строки поиска
- 2.2 Примеры
- 2.3 Особенности
Механизм полнотекстового поиска
Источник: http://v8.1c.ru/overview/fulltext.htm
Основные возможности полнотекстового поиска
- поддержка транслитерации (написание русских слов символами латиницы в соответствии с ГОСТ);
- поддержка замещения (написание части символов в русских словах одноклавишными латинскими символами);
- возможность нечеткого поиска (буквы в найденных словах могут отличаться) с указанием порога нечеткости;
- возможность указания области выполнения поиска по выбранным объектам метаданных;
- представление результатов поиска в формате XML и HTML с выделением найденных слов;
- полнотекстовое индексирование названий стандартных полей («Код», «Наименование» и т.д.) на всех языках конфигурации;
- выполнение поиска с учетом синонимов русского, английского и украинского языков;
- морфологический словарь русского языка содержит ряд специфических слов, относящихся к областям деятельности, автоматизируемым с помощью системы программ 1С:Предприятие;
- возможность использования дополнительных словарей полнотекстового поиска;
- в состав поставляемых словарей включены словарные базы и словари тезауруса и синонимов русского, украинского и английского языков, предоставленные компанией «Информатик».
Полнотекстовый поиск в базе данных
Механизм полнотекстового поиска в данных системы 1С:Предприятие 8 позволяет осуществлять поиск в базе данных с указанием поисковых операторов (И, ИЛИ, НЕ, РЯДОМ и др.).
Механизм полнотекстового поиска основан на использовании двух составляющих:
- полнотекстового индекса, который создается для текущей базы данных и затем периодически, по мере необходимости, обновляется;
- средств выполнения полнотекстового поиска.
Создание и обновление полнотекстового индекса может быть выполнено интерактивно, в режиме 1С:Предприятие 8, или программно, средствами встроенного языка. Ниже приведен диалог управления полнотекстовым индексированием в режиме 1С:Предприятие:
Файл:Fulltext.png
Для выполнения поиска данных в базе данных может использоваться, например, обработка Поиск данных, представленная ниже.
В представленном примере найдены документы, реквизиты которых содержат значения, начинающиеся на «Компл» и «вент» — контрагент «Комплетк ТД» и реквизиты, содержащие различные формы слова «вентилятор».
Система 1С:Предприятие 8 позволяет осуществлять выборочное включение данных прикладных объектов и их реквизитов в полнотекстовый поиск. Также существует возможность ограничить область поиска данными только указанных объектов конфигурации.
Файл:Fulltextdata.png
Полнотекстовый поиск в справочной системе
В справочной системе 1С:Предприятия 8 также реализован полнотекстовый поиск, позволяющий использовать поисковые операторы И, ИЛИ, НЕ, РЯДОМ и др.. При этом найденные слова выделяются.
Файл:Fulltexthelp.png
Программный интерфейс
Используются следующие прикладные объекты:
- МенеджерПолнотекстовогоПоиска
- СписокПолнотекстовогоПоиска
- ЭлементСпискаПолнотекстовогоПоиска
МенеджерПолнотекстовогоПоиска имеет методы для построения индекса поиска, проверки его актуальности, а также создания списка поиска типа СписокПолнотекстовогоПоиска по заданному запросу.
МенеджерПолнотекстовогоПоиска доступен как свойство глобального контекста ПолнотекстовыйПоиск.
СписокПолнотекстовогоПоиска предоставляет доступ к результатам поиска. Кроме того, можно указать область поиска в виде массива элементов метаданных конфигурации.
Результатом поиска является ЭлементСпискаПолнотекстовогоПоиска.
Операторы строки поиска
В строке ввода допускается использование следующих поисковых операторов:
И (AND или #) — поиск данных, содержащих все слова; пример: «запись И документ» — в реквизитах должны быть и «проведение» и «документ» (с учетом морфологии);
ИЛИ (OR или | или ,) — поиск хотя бы одного слова из перечисленных; пример: «запись ИЛИ документ» — в реквизитах должно быть хотя бы одно из слов «запись» или «документ»;
НЕ (NOT или ~) — поиск данных, в реквизитах которых есть первое слово, но нет второго; пример: «закрытие НЕ месяц» — будут найдены все, содержащие «закрытие», но не содержащие слова «месяц». Использование «~» в начале строки не допускается;
РЯДОМ/n (NEAR/[+/-]n) — поиск данных, содержащих в одном реквизите указанные слова с учетом морфологии на
расстоянии n слов между словами.
Знак указывает, в каком направлении от первого слова будет искаться второе слово («+» – после первого; «-» – до первого слова).
Если знак не указан, то будет найдены данные, содержащие указанные слова на дистанции n слов друг о друга.
Порядок слов не имеет значения.
- «фен РЯДОМ/3 воздух» — будут найдены данные, в которых «воздух» находится не более 3-х слов до или после «фен»;
- фен РЯДОМ/+3 воздух — будут найдены данные, в которых «воздух» находится не более 3-х слов после «фен»;
- фен РЯДОМ/-3 воздух — будут найдены данные, в которых «воздух» находится не более 3-х слов перед «фен».
РЯДОМ(NEAR) — упрощенный оператор дистанции: оба слова расположены не далее, чем в 8-ми словах друг от друга; пример: «проведение РЯДОМ документ»;
«» (текст в кавычках) — поиск точной с учетом морфологии фразы , пример: «проведение документа» — эквивалентно: проведение /1 документа;
() — группировка слов (сколько угодно уровней вложенности); пример: «(проведение | выписка) # (счета, документа)»;
* — поиск с использованием группового символа (замена окончания слова). Должно быть введено более 1 значащего символа; пример: «доку*» — найдет «документ», «документировать», «документальный» и др.;
# — нечеткий поиск слов с заданным количеством отличий от указанного (если не указано, то = 1); пример: запрос «#Система» найдет «систама», «сивтема»; запрос «Система#2» найдет «ситтама», «сеттема»;
! — поиск с учетом синонимов русского, английского и украинского языков. «!» ставится перед соответствующим словом; пример: поиск «!красный кафель», найдет еще и «алый кафель» и «коралловый кафель».
Если не указано никаких операторов (слова набраны через пробел), то программа осуществляет поиск всех слов из запроса с использованием оператора И.
Написание операторов И (AND), ИЛИ (OR), НЕ (NOT), РЯДОМ (NEAR) допускается только в верхнем регистре
Операторы не используются как унарные (в начале строки поиска). Например, нельзя сделать выбор всех глав, в которых отсутствует указанный текст
Примеры
СписокПоиска = ПолнотекстовыйПоиск.СоздатьСписок("", 20);
СписокПоиска.ПолучатьОписание = Истина;
...
МассивМД = Новый Массив();
МассивМД.Добавить(Метаданные.Справочники.Товары);
МассивМД.Добавить(Метаданные.Документы.КассовыйЧек);
СписокПоиска.ОбластьПоиска = МассивМД;
СписокПоиска.СтрокаПоиска = ПолеВводаПоиска;
СписокПоиска.РазмерПорции = РазмерПорции;
СписокПоиска.ПерваяЧасть();
Если СписокПоиска.ПолноеКоличество() = 0 Тогда
Если СписокПоиска.СлишкомМногоРезультатов() Тогда
Предупреждение("Слишком много результатов, уточните запрос.");
КонецЕсли;
Возврат;
КонецЕсли;
Колво = СписокПоиска.ПолноеКоличество();
СтрHTML = СписокПоиска.ПолучитьОтображение(ВидОтображенияПолнотекстовогоПоиска.HTMLТекст);
Сообщить(СтрHTML);
Для каждого индекс=0 По СписокПоиска.Количество-1 Цикл
элемент = СписокПоиска.Получить(индекс);
Сообщить(элемент.Представление);
КонецЦикла;
Особенности
Полнотекстовый поиск работает по всему массиву данных, поэтому при использовании надо обязательно пропускать результат через фильтр безопасности.
Например, в мультибазной системе нужно отсекать объекты других баз.
Кроме того, такая фильтрация тесно пересекается с контролем доступа. Известно, что очень часто «дырой» в безопасности являются как раз механизмы поиска.
Содержание:
1. Механизм полнотекстового поиска в 1С
2. Обновление индекса ППД 1С
3. Проверка индекса
1. Механизм полнотекстового поиска в 1C
В программных продуктах 1С реализована возможность полнотекстового поиска данных, которая позволяет выполнять быстрый поиск в 1С необходимой информации по базе. Такой поиск очень эффективен, если информационная база 1С содержит большой объем информации, а также в случаях, когда точно неизвестно где находятся интересующие нас данные, либо мы не знаем их точного названия. Также полнотекстовый поиск поддерживает следующие возможности:
· транслитерацию текста (ввод латиницей русских слов);
· замещение (ввод символов в русских словах латиницей);
· поиск, учитывающий синонимы русского и английского языка;
· нечеткий поиск.
2. Обновление индекса ППД 1С
Для правильной работы полнотекстового поиска требуется постоянная актуализация индекса полнотекстового поиска данных. Актуальность индекса обеспечивается двумя регламентными заданиями – «Обновление индекса ППД» и «Слияние индекса ППД», которые выполняются один раз в минуту и один раз в сутки соответственно.
Иногда возникает ситуация, что по каким-то причинам работоспособность механизма поиска нарушена, либо он осуществляется очень медленно. В таких ситуациях требуется очистить и обновить индекс ППД 1С вручную.
Данные действия доступны только пользователю с правами «Администратор» в 1С. Переходим в «Администрирование → Общие настройки → Полнотекстовый поиск данных» и нажимаем «Настроить».

Рис. 1 Ручная настройка ППД в 1С
Откроется вкладка «Управление полнотекстовым поиском и извлечение текстов». Отмечу, что полнотекстовый поиск всегда включен по умолчанию. Если вам необходимо повысить производительность программы и пользователи не так часто пользуются полнотекстовым поиском, то данный функционал целесообразно отключить.

Рис. 2 Полнотекстовый поиск данных в 1С активирован по умолчанию
3. Проверка индекса
Также имеется возможность ограничить максимальный размер данных. По умолчанию это ограничение равно 1мб, но это значение можно менять в сторону увеличения или уменьшения в зависимости от доступных ресурсов компьютера.

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

Рис. 4 Кнопки обновления, очистки и проверки индекса в 1С
Для того чтобы устранить проблемы с поиском, для начала нам необходимо удалить все индексные файлы по кнопке «Очистить индекс».
Далее необходимо заново построить индекс, для чего выбираем «Обновить индекс» (данная кнопка доступна только в том случае, если статус индекс «Требуется обновление).
После выполнения данных операций требуется нажать кнопку «Проверить индекс», чтобы убедиться, что он содержит корректные данные.
Таким образом, выполнив эти несложные манипуляции с индексом, мы восстановим работоспособность и быстродействие полнотекстового поиска
.
Специалист компании «Кодерлайн»
Подосинников Сергей
Система «1С:Предприятие» располагает механизмом полнотекстового поиска данных, который позволяет искать информацию в базе данных использую поисковые операторы. В версии технологической платформы 8.3.11 механизм полнотекстового поиска претерпел некоторые усовершенствования, это и послужило поводом для написания статьи которая рассказывает о том, что это за механизм, как он устроен и как им пользоваться.
Содержание
- Общие сведения
- Использование механизма
- Управление полнотекстовым поиском
- Выполнение поиска и обработка результатов
- Дополнительные словари
- Мобильная платформа
Общие сведения
Сам механизм полнотекстового поиска состоит из двух частей:
- полнотекстовый индекс, который создается в базе данных и обновляется по мере необходимости;
- средства выполнения полнотекстового поиска.
Искать же можно среди данных следующих объектов:
- планы обмена;
- справочники;
- документы;
- планы видов характеристик;
- планы счетов;
- планы видов расчета;
- регистры сведений;
- регистры накопления;
- регистры бухгалтерии;
- регистры расчета;
- бизнес-процессы;
- задачи.
Для перечисленных объектов, а также для подчиненных им объектов (для реквизитов, например) реализовано свойство «Полнотекстовый поиск», которое позволяет управлять полнотекстовым индексирование объектов (очень похоже на историю данных).
Изменение отмеченных объектов учитывается в журнале регистрации изменений. Информация из этого журнала используется при полнотекстовом индексировании, которое выполняется в привилегированном режиме на сервере, монопольный доступ к базе при этом не требуется. Индексацию проходят реквизиты типов:
- строка;
- дата;
- число;
- ссылочные типы;
- хранилище значения.
Для каждого объекта/реквизита в полнотекстовый индекс добавляется:
- имя объекта метаданных или его реквизита;
- синоним объекта метаданных иди его реквизита;
- представление объекта метаданных.
Полнотекстовое индексирование создает основной индекс, а последующие изменения данных — дополнительный. Это важная особенность, так как поиск по основному индексу выполняется быстрее чем по дополнительному. Для устранения этого недостатка в процессе индексирования предусмотрена возможность слияния индексов. Этот процесс может потребовать значительного времени (зависит от размера основного индекса), поэтому для его выполнения рекомендуется выбирать такое время, когда нагрузка на систему минимальна (ночь или выходные).
В клиент-серверном варианте работы поиск выполняется на сервере. Результаты возвращаются частями, размер которых определяется при выполнении команды полнотекстового поиска. Ранжирование результатов осуществляется по:
- «весу» объекта (чем больше ссылок на этот объект из реквизитов других объектов, тем больше вес);
- дате объекта (новые объекты вверху).
Использование механизма
Работа с полнотекстовым поиском осуществляется при помощи свойства глобального контекста — ПолнотекстовыйПоиск.
Отмечу, что примеры предназначен только для демонстрации имеющихся методов и имеет мало общего с реальными задачами, возникающими при работе с полнотекстовым поиском.
Некоторые методы требуют наличия у пользователя административных прав, подробнее об этом написано в синтаксис-помощнике.
Управление полнотекстовым поиском
Сначала рассмотрим методы которые позволяют получать информацию о полнотекстовом индексе и управлять им.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
&НаСервере Процедура РаботаСПолнотекстовымПоиском() //проверим доступность полнотекстового поиска Если ПолнотекстовыйПоиск.ПолучитьРежимПолнотекстовогоПоиска() = РежимПолнотекстовогоПоиска.Запретить Тогда //разрешим полнотекстовый поиск //в этом случае имеющийся индекс будет очищен ПолнотекстовыйПоиск.УстановитьРежимПолнотекстовогоПоиска(РежимПолнотекстовогоПоиска.Разрешить); Иначе //очистим весь индекси начнем все с начала ПолнотекстовыйПоиск.ОчиститьИндекс(); КонецЕсли; //дата актуальности индекса ДатаАктуальности = ПолнотекстовыйПоиск.ДатаАктуальности(); //получим максимальный размер индексируемых данных в байтах //по умолчанию 1048576 байт — 1 мегабайт МаксимальныйРазмерИД = ПолнотекстовыйПоиск.ПолучитьМаксимальныйРазмерИндексируемыхДанных(); //будем индексировать все данные ПолнотекстовыйПоиск.УстановитьМаксимальныйРазмерИндексируемыхДанных(0); //получим максимальное количество фоновых заданий //которое может быть запущено для обновления индекса КоличествоЗаданий = ПолнотекстовыйПоиск.ПолучитьКоличествоЗаданийИндексирования(); //доверим системе самой выбирать количество заданий ПолнотекстовыйПоиск.УстановитьКоличествоЗаданийИндексирования(0); //проверяем актуальность индекса Если НЕ ПолнотекстовыйПоиск.ИндексАктуален() Тогда //проверяем необходимость слияния Если НЕ ПолнотекстовыйПоиск.ОбновлениеИндексаЗавершено() Тогда //обновляем индекс со слиянием ПолнотекстовыйПоиск.ОбновитьИндекс(Истина, Ложь); Иначе //обновление без слияния ПолнотекстовыйПоиск.ОбновитьИндекс(); КонецЕсли; КонецЕсли; КонецПроцедуры |
Выполнение поиска и обработка результатов
Описание синтаксиса поисковых выражений можно посмотреть здесь.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
&НаСервере Процедура РаботаСоСпискомРезультатов() //поищем в базе по слову «Товары» и установим размер порции — 10 //размер порции по умолчанию — 20 РезультатыПоиска = ПолнотекстовыйПоиск.СоздатьСписок(«Товары», 10); //для каждого результата буде тзаполнено описание //что помогает понять контекст РезультатыПоиска.ПолучатьОписание = Истина; //в тоже время, это ускорит поиск //РезультатыПоиска.ПолучатьОписание = Ложь; //выполняет поиск и получает первую часть результатов РезультатыПоиска.ПерваяЧасть(); //если результатов поиска слишком, то производится усечение результатов СлишкомМногоРезультатов = РезультатыПоиска.СлишкомМногоРезультатов(); //общее количество найденых результатов ОбщееКоличество = РезультатыПоиска.ПолноеКоличество(); //количество результатов в текущей порции КоличествоВЭтойПорции = РезультатыПоиска.Количество(); Попытка //навигация по результатам осуществляется так //параметр указывает откуда взять следующую/предыдущую часть РезультатыПоиска.СледующаяЧасть(50); //и так РезультатыПоиска.ПредыдущаяЧасть(35); Исключение //при достижении конца результатов будет вызвано исключение //тоже самое будет если строка поиска содержит ошибки КонецПопытки; //узнаем текущую позицию поиска ТекущееПоложения = РезультатыПоиска.НачальнаяПозиция(); Для Каждого Результат Из РезультатыПоиска Цикл //список полнотекстового поиска можно обойти в цикле //свойства элементов списка на картинке ниже КонецЦикла; //получает результаты поиска либо в виде объекта ЧтениеXML //либо в виде строки с текстом в формате HTML //в формате HTML найденные слова подсвечены, пример ниже ОтображениеПоиска = РезультатыПоиска.ПолучитьОтображение(ВидОтображенияПолнотекстовогоПоиска.HTMLТекст); КонецПроцедуры |
Дополнительные словари
Дополнительные словари расширяют системные словари, добавляя особые термины и слова, которые встречаются в конкретной конфигурации. В качестве словарей могут использоваться макеты из двоичных данных и текстовые макеты, а также константы строкового типа и типа ХранилищеЗначения. Что бы это ни было, оно должно иметь следующий вид:
|
рунетрунета рунете рунетом ВанессаВанессе Ванессы Ванессу ошибка баг сбой стрим поток |
Указать дополнительные словари можно в свойстве конфигурации «Дополнительные словари»:
Мобильная платформа
Полнотекстовый поиск на мобильной платформе работает с некоторыми ограничениями:
- не поддерживается поиск с учетом морфологии;
- нельзя подключить дополнительные словари;
- нельзя использовать операцию извлечения текста.
Кроме этого существуют еще некоторые особенности работы полнотекстового поиска на мобильной платформе:
- обновление индекса выполняется автоматически;
- обновление индекса выполняется посредством фонового задания, которое создается в том случае, если не выполняется серверный вызов или другое фоновое задание;
- если все объекта проиндексированы, то через 20 секунд бездействия платформа запускает слияние индексов.
Несмотря на автоматическое обновление индекса, иногда требуется принудительное обновление индекса, сделать это можно с помощью метода ОбновитьИндекс().
На этом все, надеюсь, что эта статья была Вам полезна.
Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Загрузка…








