ISolrSearchContext.RelevanceImpactFormula

Fore Syntax

RelevanceImpactFormula: String;

Fore.NET Syntax

RelevanceImpactFormula: String;

Description

The RelevanceImpactFormula property determines search relevance influence formula.

Comments

Relevance formula is the formula basing on which value significance of indexed fields is determined. The formula can use created fields and different functions. The list of available functions is presented in the help system for Apache Solr by the https://wiki.apache.org/solr/FunctionQuery address. The result of formula calculation must be integer value which, to determine relevance, will be multiplied to relevance value of found document. Apache Solr calculates the relevance value of found document.

If the RelevanceImpactFormula property is not set, the formula determined in the ISolrSearchOptions.RelevanceImpactFormula property will be used.

Fore Example

Executing the example requires changes in the Solr configuration file: the rateDataDynamic and rateWeight custom fields are added to the file. The information determining the data role of each record is stored for those fields. Connect the BISearch, Fore, Metabase system assemblies.

Sub UserProc;
Var
    MB: IMetabase;
    SharedParams: ISharedParams;
    SearchEngine: ISolrSearchEngineService;
    Schema: ISolrSearchEngineSchema;
    SearchExecutor: ISearchExecutor;
    SearchContext: ISolrSourceDataSearchContext;
    Results: ISolrSearchResults;
    Result: ISearchResult;
    i: Integer;
Begin
    MB := MetabaseClass.Active;
    //Parameters of search and indexing set for repository
    SharedParams := MB.SpecialObject(MetabaseSpecialObject.SharedParams).Bind As ISharedParams;
    SearchEngine := SharedParams.SearchEngine As ISolrSearchEngineService;
    Schema := SearchEngine.SearchEngineSchema As ISolrSearchEngineSchema;
    //Search parameters
    SearchExecutor := Schema.SearchExecutor(SearchEngineTargetType.SourceData);
    SearchContext := SearchExecutor.CreateContext As ISolrSourceDataSearchContext;
    //Relevance formula
    SearchContext.RelevanceImpactFormula := "sum(rateDataDynamic,rateWeight)";
    SearchContext.Locale := LocaleCodeID.Russian;
    SearchContext.Text := "Russia";
    SearchContext.SearchType := SolrSearchType.SearchOnly;
    //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 searching 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. To search, relevance formula will be determined. According to the formula, more relevant records are those fro which the sum of the rateDataDynamic and rateWeight fields has bigger value. Those values will be the first in the search result. The results are displayed in development environment console.

Fore.NET Example

The requirements and result of the Fore.NET example execution match with those in the Fore example. Except assemblies determined in the Fore Example, connect also the ForeSystem assembly.

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;
    SharedParams: ISharedParams;
    SearchEngine: ISolrSearchEngineService;
    Schema: ISolrSearchEngineSchema;
    SearchExecutor: ISearchExecutor;
    SearchContext: ISolrSourceDataSearchContext;
    Results: ISolrSearchResults;
    Result: ISearchResult;
    i: Integer;
Begin
    MB := Params.Metabase;
    //Parameters of search and indexing set for repository
    SharedParams := MB.SpecialObject[MetabaseSpecialObject.msoSharedParams].Bind() As ISharedParams;
    SearchEngine := SharedParams.SearchEngine As ISolrSearchEngineService;
    Schema := SearchEngine.SearchEngineSchema As ISolrSearchEngineSchema;
    //Search parameters
    SearchExecutor := Schema.SearchExecutor[SearchEngineTargetType.settSourceData];
    SearchContext := SearchExecutor.CreateContext() As ISolrSourceDataSearchContext;
    //Relevance formula
    SearchContext.RelevanceImpactFormula := "sum(rateDataDynamic,rateWeight)";
    SearchContext.Text := "Russia";
    SearchContext.SearchType := SolrSearchType.sstSearchOnly;
    //Search
    Results := SearchExecutor.Search(SearchContext) As ISolrSearchResults;
    //View search results
    For i := 0 To Results.Count - 1 Do
        Result := Results.Item[i];
        System.Diagnostics.Debug.WriteLine("Name: """ + Result.Name + """. Description: """ + Result.Description + '"');
        If Result.HighlightedName <> "" Then
            System.Diagnostics.Debug.Indent();
            System.Diagnostics.Debug.WriteLine("Values with highlighted searched value:");
            System.Diagnostics.Debug.WriteLine("Name: """ + Result.HighlightedName + """. Description: """ + Result.HighlightedDescription + '"');
            System.Diagnostics.Debug.Unindent();
        End If;
    End For;
End Sub;

See also:

ISolrSearchContext