Consider researching Solr functions. My experience has used a hard-coded field name with solr field extension. Perhaps you can figure out how to make this more dynamic. First you can start by adding a new field to your `CustomSearchResultItem` class. <!-- language:lang-csharp --> [IndexField("_val_")] public string _val_ { get; set; } Second you can write a query using the new field. <!-- language:lang-csharp --> var query = PredicateBuilder.True(); query = query.And(x => x._val_.Equals("recip(abs(ms(NOW/HOUR,startdate_tdt)),3.16e-11,4,.4)")); What this query _should_ do is rank the results higher when the date is close to today, and then rank lower the further away it is. Here is a simple demonstration while using Sitecore PowerShell Extensions against Solr. <!-- language:lang-powershell --> $criteria = @( @{Filter = "Equals"; Field = "_val_"; Value = "recip(abs(ms(NOW/HOUR,__smallcreateddate_tdt)),3.16e-11,4,.4)"} ) $props = @{ Index = "sitecore_master_index" Criteria = $criteria } Find-Item @props | Select-Object Name,CreatedDate I used _CreatedDate_ and so I don't expect any future dates. [![Example results][1]][1] [1]: https://i.sstatic.net/bV9IC.png