Id: String;
Id: String;
Свойство Id возвращает идентификатор объекта репозитория.
Предполагается, что репозиторий настроен на работу с поисковым сервисом на базе Apache Solr. В базе поискового сервиса имеются индексированные метаданные различных объектов репозитория. Подключите системные сборки: BISearch, Fore, Metabase.
Sub UserProc;
Var
MB: IMetabase;
SharedParams: ISharedParams;
SearchEngine: ISolrSearchEngineService;
Schema: ISolrSearchEngineSchema;
SearchExecutor: ISearchExecutor;
SearchContext: ISolrMbObjectsSearchContext;
Results: ISolrSearchResults;
Result: ISearchMbObjectResult;
i: Integer;
Begin
MB := MetabaseClass.Active;
//Параметры поиска и индексации, заданные для репозитория
SharedParams := MB.SpecialObject(MetabaseSpecialObject.SharedParams).Bind As ISharedParams;
SearchEngine := SharedParams.SearchEngine As ISolrSearchEngineService;
Schema := SearchEngine.SearchEngineSchema As ISolrSearchEngineSchema;
//Параметры поиска
Schema.SearchOptions.UseSmartSearch := False;
SearchExecutor := Schema.SearchExecutor(SearchEngineTargetType.MbObject);
SearchContext := SearchExecutor.CreateContext As ISolrMbObjectsSearchContext;
SearchContext.Locale := LocaleCodeID.Russian;
SearchContext.Text := "Куб
2016";
//Поиск
Results := SearchExecutor.Search(SearchContext) As ISolrSearchResults;
//Просмотр результатов поиска
For i := 0 To Results.Count - 1 Do
Result := Results.Item(i) As ISearchMbObjectResult;
Debug.WriteLine(Result.ClassName + '(' + Result.ClassId.ToString + ')');
If Result.HighlightedClassName <> "" Then
Debug.WriteLine("Наименование класса с подсветкой искомого значения: " + Result.HighlightedClassName);
End If;
Debug.Indent;
Debug.WriteLine("Объект: " + Result.Name + '(' + Result.Id + "). Ключ: " + Result.Key.ToString);
Debug.WriteLine("Дата и время последнего изменения: " + Result.Timestamp);
Debug.WriteLine("Информация с подсветкой искомого значения:");
If Result.HighlightedName <> "" Then
Debug.WriteLine("Наименование: " + Result.HighlightedName);
End If;
If Result.HighlightedId <> "" Then
Debug.WriteLine("Идентификатор: " + Result.HighlightedId);
End If;
If Result.HighlightedDescription <> "" Then
Debug.WriteLine("Описание: " + Result.HighlightedDescription);
End If;
If Result.HighlightedTimestamp <> "" Then
Debug.WriteLine("Дата и время последнего изменения: " + Result.HighlightedTimestamp);
End If;
If Result.HighlightedKey <> "" Then
Debug.WriteLine("Ключ: " + Result.HighlightedKey);
End If;
Debug.Unindent;
End For;
End Sub UserProc;
При выполнении примера будет осуществлен поиск указанного значения по индексированным метаданным объектов репозитория. Информация о найденных объектах будет выведена в консоль среды разработки.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore. Кроме сборок, указанных в примере Fore, подключите также сборку «ForeSystem».
Imports Prognoz.Platform.Interop.BISearch;
Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.KeFore;
Imports Prognoz.Platform.Interop.Metabase;
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
MBClass: MetabaseClass = New MetabaseClassClass();
SharedParams: ISharedParams;
SearchEngine: ISolrSearchEngineService;
Schema: ISolrSearchEngineSchema;
SearchExecutor: ISearchExecutor;
SearchContext: ISolrMbObjectsSearchContext;
Results: ISolrSearchResults;
Result: ISearchMbObjectResult;
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.SearchOptions.UseSmartSearch := False;
SearchExecutor := Schema.SearchExecutor[SearchEngineTargetType.settMbObject];
SearchContext := SearchExecutor.CreateContext() As ISolrMbObjectsSearchContext;
SearchContext.Locale := LocaleCodeID.lcidRussian;
SearchContext.Text := "Куб
2016";
//Поиск
Results := SearchExecutor.Search(SearchContext) As ISolrSearchResults;
//Просмотр результатов поиска
For i := 0 To Results.Count - 1 Do
Result := Results.Item[i] As ISearchMbObjectResult;
System.Diagnostics.Debug.WriteLine(Result.ClassName + '(' + Result.ClassId.ToString() + ')');
If Result.HighlightedClassName <> "" Then
System.Diagnostics.Debug.WriteLine("Наименование класса с подсветкой искомого значения: " + Result.HighlightedClassName);
End If;
System.Diagnostics.Debug.Indent();
System.Diagnostics.Debug.WriteLine("Объект: " + Result.Name + '(' + Result.Id + "). Ключ: " + Result.Key.ToString());
System.Diagnostics.Debug.WriteLine("Дата и время последнего изменения: " + Result.Timestamp);
System.Diagnostics.Debug.WriteLine("Информация с подсветкой искомого значения:");
If Result.HighlightedName <> "" Then
System.Diagnostics.Debug.WriteLine("Наименование: " + Result.HighlightedName);
End If;
If Result.HighlightedId <> "" Then
System.Diagnostics.Debug.WriteLine("Идентификатор: " + Result.HighlightedId);
End If;
If Result.HighlightedDescription <> "" Then
System.Diagnostics.Debug.WriteLine("Описание: " + Result.HighlightedDescription);
End If;
If Result.HighlightedTimestamp <> "" Then
System.Diagnostics.Debug.WriteLine("Дата и время последнего изменения: " + Result.HighlightedTimestamp);
End If;
If Result.HighlightedKey <> "" Then
System.Diagnostics.Debug.WriteLine("Ключ: " + Result.HighlightedKey);
End If;
System.Diagnostics.Debug.Unindent();
End For;
End Sub;
См. также: