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.