Creates and tune a custom rank profile for fastsearch

Uses default rankprofile as template when creating a new rankprofile. The new rankprofile is associated with a custom fill text index and tuned. Tuning examples in the script are

Verify creation of the new rankprofile by opening the XML file FASTSearch\index-profiles\deployment-ready-index-profile.xml.
Locate the rank-profile sections to verify the new rank-profile.

 

 

PowerShell
Edit|Remove
cls 
#*========================================================================================== 
#* Purpose: This script will create and tune a custom rank profile for fastsearch. 
#* Created By: Jan Inge Bergseth 
#*=========================================================================================== 
 
 
#*=========================================================================== 
#* Arguments:     None 
#*=========================================================================== 
#* Purpose: Create a new rank profile with the name specified. 
#*=========================================================================== 
Function CreateRP 
{ 
    $rp = Get-FASTSearchMetadataRankProfile -Name default 
     
    Write-Host $("MESSAGE: Create a new rank profile (" + $rankprofilename + "), using default rank profile (" + $rp + ") as a template") 
 
    $np = New-FASTSearchMetadataRankProfile -Name $rankprofilename -Template $rp 
 
} 
 
#*=========================================================================== 
#* Arguments:None 
#*=========================================================================== 
#* Purpose: Map Full text Index to the Rank Profile 
#*=========================================================================== 
Function MapFullTextIndexToRP 
{ 
    Write-Host $("MESSAGE: Map the Full Text Index ("+ $fulltextindexname +") to the custom Rank Profile ("+ $rankprofilename +")") 
     
     
    $fti = Get-FASTSearchMetadataFullTextIndex -name $fulltextindexname 
    $rp = Get-fastsearchmetadatarankprofile –name $rankprofilename 
    $rp.CreateFullTextIndexRankComponent($fti) 
} 
 
#*=========================================================================== 
#* Arguments:None 
#*=========================================================================== 
#* Purpose: Tune custom Rank Profile 
#*=========================================================================== 
Function TuneRP() 
{ 
 
    Write-Host $("") 
    Write-Host $("MESSAGE: Tune custom Rank Profile (" + $rankprofilename +")") 
    $np = Get-FASTSearchMetadataRankProfile -Name $rankprofilename 
 
    # Change Freshnessresolution (available resolutions are: second, minute, hour,  day and year) and weight parameters: 
    $np.FreshnessResolution = "hour" 
    $np.FreshnessWeight = 100 
 
    # Update query authority (lower from default of 50 to 40) 
    $np.QueryAuthorityWeight = 40 
     
    # Managed Property boost based on urls 
    $mp = Get-FASTSearchMetadataManagedProperty -Name "urls"  
    $np.CreateManagedPropertyBoostComponent($mp"blogs,200") 
    $np.Update() 
     
    # Managed Property boost based on searchglossary 
    $mp = Get-FASTSearchMetadataManagedProperty -Name "searchglossary"  
    $np.CreateManagedPropertyBoostComponent($mp"search,1000")  
    $np.CreateManagedPropertyBoostComponent($mp"fs4sp,200")  
    $np.CreateManagedPropertyBoostComponent($mp"fastsearch,200")  
    $np.Update() 
     
     
    #====================================================================== 
    #Remove deboosting based on managed property values 
    #====================================================================== 
     
    #Remove the deboosting of the IsListItem as list forms are returned for video and other unrecognized file formats 
    #No change to isemptylist as this propery does not affect fastsearch result set. 
    #Remove deboosting based on the fileextension 
    #Apply deboosting on unknown file formats 
     
    #remove a ManagedPropertyBoosts 
    $np.GetManagedPropertyBoosts() | where-object -FilterScript {if($_.ManagedPropertyReference.Name -eq "IsListItem") {$_.Delete()}} 
    $np.GetManagedPropertyBoosts() | where-object -FilterScript {if($_.ManagedPropertyReference.Name -eq "fileextension") {$_.Delete()}} 
     
    #modify a ManagedPropertyBoosts value 
    $np.GetManagedPropertyBoosts() | where-object -FilterScript {if($_.ManagedPropertyReference.Name -eq "format") {$_.BoostValue="unknown format,-4000";$_.Update()}} 
     
    #====================================================================== 
    #Remove deboosting based on managed property values 
    #====================================================================== 
 
    # Update context weight (change to 100) of the custom full text index.  
    $content = $np.GetFullTextIndexRanks()|where-Object -filterscript {$_.FullTextIndexReference.Name -eq $fulltextindexname} 
    $content.ContextWeight = 80 
    $content.Update() 
     
    # Update context weight (change to 10) of the default full text index.  
    $content = $np.GetFullTextIndexRanks()|where-Object -filterscript {$_.FullTextIndexReference.Name -eq 'content'} 
    $content.ContextWeight = 10 
    $content.Update() 
     
    #Update the weight of the Importance Level $selected_importance_level 
    $rankcomp$np.GetFullTextIndexRanks()|%{if ($_.FullTextIndexReference.Name -eq $fulltextindexname) { $_ }} 
    $rankcomp.SetImportanceLevelWeight($selected_importance_level,20) 
} 
 
#Function to rever all the Rank Profile changes 
Function RevertRP 
{ 
    Write-Host $("MESSAGE: Remove the Rank Profile (" + $rankprofilename +")") 
     
    trap [Exception]  
    { 
        Write-Host $("MESSAGE:" + $_.Exception.Message); 
        continue; 
    } 
    #Remove the new Rank Profile 
    Remove-FASTSearchMetadataRankProfile -Name $rankprofilename -Force 
} 
 
#************************************** 
# Main Start 
#************************************** 
 
 
$rankprofilename = "searchrankprofile" #Name of the new Rank profile 
$fulltextindexname = 'searchcontent' #Name of the full text index. 
$selected_importance_level = 1 #Importance Level for MP without old level mappings. 
 
RevertRP 
CreateRP 
MapFullTextIndexToRP 
TuneRP 
 
#************************************** 
# Main End 
#**************************************