Add(Destination: ICubeModelDestination): ISourceDataImportDestinationInfo;
Add(Destination: Prognoz.Platform.Interop.Cubes.ICubeModelDestination): Prognoz.Platform.Interop.BISearch.ISourceDataImportDestinationInfo;
Destination. Вариант отображения источника данных, для которого необходимо добавить настройки индексации.
Метод Add добавляет настройки индексации для указанного варианта отображения источника данных.
Важно. В связи с имеющимися особенностями реализации языка Fore и использованием мнопоточного режима при индексации, индексация с использованием кода на Fore не поддерживается. Осуществляйте разработку на языке Fore.NET.
Для выполнения примера предполагается наличие в репозитории стандартного куба с идентификатором «STD_CUBE». В самом репозитории определены настройки для индексации и поиска на русском языке.
Imports Prognoz.Platform.Interop.BISearch;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.KeFore;
Imports Prognoz.Platform.Interop.Metabase;
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
SharedParams: ISharedParams;
SearchEngine: ISolrSearchEngineService;
Schema: ISolrSearchEngineSchema;
ImportExecutor: IImportExecutor;
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;
//Параметры поиска и индексации, заданные для репозитория
SharedParams := MB.SpecialObject[MetabaseSpecialObject.msoSharedParams].Bind() As ISharedParams;
SearchEngine := SharedParams.SearchEngine As ISolrSearchEngineService;
Schema := SearchEngine.SearchEngineSchema As ISolrSearchEngineSchema;
//Параметры индексации
Schema.ImportProcessOptions.NeedSmartSearch := False;
ImportExecutor := Schema.ImportExecutor[SearchEngineTargetType.settSourceData];
ImportContext := ImportExecutor.CreateContext() As ISourceDataImportContext;
SolrContext := ImportContext As ISolrImportContext;
SolrContext.CleanType := SolrImportCleanType.sictSpecified;
SolrContext.Locales := Locales;
//Индексируемый объект
Cube := MB.ItemById["STD_CUBE"].Bind() As ICubeModel;
CubeDimensions := Cube.Destinations.DefaultDestination.Dimensions;
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 Each DimS In DimSS Do
Select Case DimS.Dimension.Ident
Case "FACTS", "INDICATORS":
DimS.SelectAll();
Case "COUNTRY":
DimS.SelectElement(0, False);
DimS.SelectElement(1, False);
End Select;
End For;
//Индексация
ImportExecutor.Import(ImportContext);
End Sub;
При выполнении примера будет создан контекст, необходимый для индексации элементов измерений источников данных. В настройках будет указан язык, на котором осуществляется индексация, и будет добавлен один источник. Для источника будет выбран вариант отображения и указаны параметры индексации для различных измерений: измерение «FACTS» будет добавлено в свободные измерения, для остальных измерений будет указана необходимость генерации ключевых слов. Календарное измерение по умолчанию находится в списке свободных, поэтому в коде оно не обрабатывается. Для измерений будет определена необходимая отметка. После указания всех настроек будет произведена индексация.
См. также: