ImportContext[Type: Prognoz.Platform.Interop.BISearch.SearchEngineTargetType]: Prognoz.Platform.Interop.BISearch.ISearchEngineImportContext;
Type. Тип индексируемых данных.
Свойство ImportContext определяет контекст с настройками индексации объектов.
Важно. В связи с имеющимися особенностями реализации языка Fore и использованием мнопоточного режима при индексации, настройка параметров задачи с использованием кода на Fore не поддерживается. Осуществляйте разработку на языке 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(0, False);
DimS.SelectElement(1, False);
End Select;
End For;
//Установка настроенного контекста в задачу
Task.ImportContext[SearchEngineTargetType.settSourceData] := ImportContext;
//Сохранение задачи
(Task As IMetabaseObject).Save();
End Sub;
При выполнении примера в контейнере запланированных задач будет создана новая задача, осуществляющая обновление поискового индекса. В задачу будет добавлен указанный стандартный куб, произведена настройка его измерений:
Измерение фактов будет индексироваться как свободное измерение (поиск по элементам производиться будет, но их наименования не будут включены в результаты поиска);
Измерения «INDICATORS» и «COUNTRY» будут включены в список измерений, для которых будут генерироваться ключевые слова, повышающие релевантность поиска;
В измерении «COUNTRY» будут отмечены первые два элемента, остальные измерения индексируются по полной отметке;
Элементы календаря будут сгруппированы по уровням.
См. также: