ISolrSearchContext.SortContext

Syntax

SortContext: ISolrSortContext;

Description

The SortContext property returns parameters of search result sorting.

Example

It is supposed that the repository is set to work with search service based on Apache Solr. Search service base contains indexed metadata of various repository objects. Add links to the BISearch, Fore, Metabase system assemblies.

Sub UserProc;
Var
    MB: IMetabase;
    SharedParams: ISharedParams;
    SearchEngine: ISolrSearchEngineService;
    Schema: ISolrSearchEngineSchema;
    SearchExecutor: ISearchExecutor;
    SolrContext: ISolrSearchContext;
    SortContext: ISolrSortContext;
    SortItem: ISolrSortItem;
    SearchContext: ISolrSourceDataSearchContext;
    Results: ISolrSearchResults;
    Result: ISearchResult;
    i: Integer;
Begin
    MB := MetabaseClass.Active;
    //Search and indexing parameters specified for repository
    SharedParams := MB.SpecialObject(MetabaseSpecialObject.SharedParams).Bind As ISharedParams;
    SearchEngine := SharedParams.SearchEngine As ISolrSearchEngineService;
    Schema := SearchEngine.SearchEngineSchema As ISolrSearchEngineSchema;
    //Sorting parameters
    SearchExecutor := Schema.SearchExecutor(SearchEngineTargetType.SourceData);
    SolrContext := SearchExecutor.CreateContext As ISolrSearchContext;
    SortContext := SolrContext.SortContext;
    SortItem := SortContext.AddField(Schema.Fields(SearchEngineTargetType.SourceData).FindById("name"));
    SortItem.SortDirection := SearchSortMode.Descending;
    //Search parameters
    SearchContext := SolrContext As ISolrSourceDataSearchContext;
    SearchContext.Locale := LocaleCodeID.Russian;
    SearchContext.Text := "Russia";
    //Search
    Results := SearchExecutor.Search(SearchContext) As ISolrSearchResults;
    //View search results
    For i := 0 To Results.Count - 1 Do
        Result := Results.Item(i);
        Debug.WriteLine("Name: """ + Result.Name + """. Description: """ + Result.Description + '"');
        If Result.HighlightedName <> "" Then
            Debug.Indent;
            Debug.WriteLine("values with highlighting of searched value:");
            Debug.WriteLine("Name: """ + Result.HighlightedName + """. Description: """ + Result.HighlightedDescription + '"');
            Debug.Unindent;
        End If;
    End For;
End Sub UserProc;

After executing the example the specified value by indexed information about dimension elements will be searched. Search results will be sorted by descending value of the name field. The results are displayed in the development environment console.

See also:

ISolrSearchContext