ISearchEngineImportScheduledTask.ImportContext

Синтаксис Fore.NET

ImportContext[Type: Prognoz.Platform.Interop.BISearch.SearchEngineTargetType]: Prognoz.Platform.Interop.BISearch.ISearchEngineImportContext;

Параметры

Type. Тип индексируемых данных.

Описание

Свойство ImportContext определяет контекст с настройками индексации объектов.

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

Пример Fore.NET

Для выполнения примера предполагается наличие в репозитории контейнера запланированных задач с идентификатором «TASK_CONTAINER» и стандартного куба с идентификатором «STD_CUBE». В структуре куба имеется измерение «INDICATORS» со списком различных показателей, «COUNTRY» со списком стран, измерение фактов «FACTS» и какое-либо календарное измерение.

Imports Prognoz.Platform.Interop.BISearch;
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.Metabase;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    CrInfo: IMetabaseObjectCreateInfo;
    Task: ISearchEngineImportScheduledTask;
    SearchEngine: ISolrSearchEngineService;
    ImportContext: ISourceDataImportContext;
    SolrContext: ISolrImportContext;
    Locales: Array = New Integer[1] = [LocaleCodeID.lcidRussian As Integer];
    Cube: ICubeModel;
    CubeDimensions: ICubeModelDimensions;
    CubeDimension: IDimensionModel;
    SourceInfo: ISourceDataImportInfo;
    DestinationInfo: ISourceDataImportDestinationInfo;
    DimSS: IDimSelectionSet;
    DimS: IDimSelection;
    i: Integer;
Begin
    MB := Params.Metabase;
    //Создание задачи
    CrInfo := MB.CreateCreateInfo();
    CrInfo.ClassId := MetabaseObjectClass.KE_CLASS_TASK_SEARCHENGINE_IMPORT As Integer;
    CrInfo.Name := "Индексация стандартного куба";
    CrInfo.Parent := Mb.ItemById["TASK_CONTAINER"];
    Task := MB.CreateObject(CrInfo).Edit() As ISearchEngineImportScheduledTask;
    //Получение поискового сервиса
    SearchEngine := Task.Engine As ISolrSearchEngineService;
    //Контекст для индексации объектов
    SolrContext := SearchEngine.SearchEngineSchema.ImportExecutor[SearchEngineTargetType.settSourceData].CreateContext() As ISolrImportContext;
    SolrContext.CleanType := SolrImportCleanType.sictSpecified;
    SolrContext.Locales := Locales;
    //Индексируемый объект - стандартный куб
    Cube := MB.ItemById["STD_CUBE"].Bind() As ICubeModel;
    CubeDimensions := Cube.Destinations.DefaultDestination.Dimensions;
    //Добавление куба и настройка параметров индексирования
    ImportContext := (SolrContext As ISourceDataImportContext);
    SourceInfo := ImportContext.SourceInfos.Add(Cube);
    DestinationInfo := SourceInfo.DestinationInfos.Add(Cube.Destinations.DefaultDestination);
    //Параметры индексации варианта отображения
    //Группировать элементы календаря по уровням
    DestinationInfo.GroupByDl := True;
    //Полная индексация
    DestinationInfo.ImportMode := SourceImportMode.simFull;
    //Формирование списков измерений
    For i := 0 To CubeDimensions.Count - 1 Do
        CubeDimension := CubeDimensions.Item[i];
        Select Case (CubeDimension As IMetabaseObject).Id
            Case "FACTS": DestinationInfo.FreeDimensions.Add(CubeDimension);
            Case "INDICATORS""COUNTRY": DestinationInfo.KeyWordsDimensions.Add(CubeDimension);
        End Select;
    End For;
    //Установка отметки по измерениям
    DimSS := DestinationInfo.SelectionSet;
    For i := 0 To DimSS.Count - 1 Do
        DimS := DimSS.Item[i];
        Select Case DimS.Dimension.Ident
            Case "FACTS""INDICATORS":
                DimS.SelectAll();
            Case "COUNTRY":
                DimS.SelectElement(0False);
                DimS.SelectElement(1False);
        End Select;
    End For;
    //Установка настроенного контекста в задачу
    Task.ImportContext[SearchEngineTargetType.settSourceData] := ImportContext;
    //Сохранение задачи
    (Task As IMetabaseObject).Save();
End Sub;

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

См. также:

ISearchEngineImportScheduledTask