Skip to content

Instantly share code, notes, and snippets.

@AndyButland
Created May 21, 2023 12:13
Show Gist options
  • Save AndyButland/5342a0a5f9ac90f3937471c0b795d1b9 to your computer and use it in GitHub Desktop.
Save AndyButland/5342a0a5f9ac90f3937471c0b795d1b9 to your computer and use it in GitHub Desktop.
private async Task CreateIndex(SearchIndexClient indexClient)
{
var fieldBuilder = new FieldBuilder();
IList<SearchField> searchFields = fieldBuilder.Build(typeof(PackageModel));
var definition = new SearchIndex(_searchSettings.IndexName, searchFields);
// Add a scoring profile to boost text matches on more relevent fields.
const string DefaultScoringProfileName = "PackageSearch";
var scoringProfile = new ScoringProfile(DefaultScoringProfileName)
{
TextWeights = new TextWeights(new Dictionary<string, double>())
};
scoringProfile.TextWeights.Weights.Add(nameof(PackageModel.PackageId), 5);
scoringProfile.TextWeights.Weights.Add(nameof(PackageModel.Title), 5);
scoringProfile.TextWeights.Weights.Add(nameof(PackageModel.Description), 3);
scoringProfile.TextWeights.Weights.Add(nameof(PackageModel.Authors), 2);
scoringProfile.TextWeights.Weights.Add($"{nameof(PackageModel.AuthorDetails)}/{nameof(AuthorModel.Description)}", 2);
definition.ScoringProfiles.Add(scoringProfile);
definition.DefaultScoringProfile = DefaultScoringProfileName;
await indexClient.CreateIndexAsync(definition);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment