I'm using Drupal 6.22 with apache solr module for search functionality, specifically using 6.x-1.6 version of solr. I had a date field for my node added to the solr indexing named as
ds_myDate in ISO-8601 format (Y-M-DTH:i:sZ) and used it for sorting the search results which worked fine.
Recently I decided to replace the sort with a search boost functionality so that most relevant search results are boosted based on the
ds_myDate field. In my custom module's
hook_apachesolr_modify_query adding the following code (based on understanding from http://wiki.apache.org/solr/FunctionQuery#Date_Boosting)
$params['bf'] = "recip(ms(NOW/HOUR,ds_myDate),3.16e-11,1,1)";
to effect the boosting threw 400 error stating Can't use ms() function on non-numeric legacy date field ds_myDate. Hence I tried using an alternative of adding the same in the queryfield instead of boostfield in the same hook as
$params['qf'] = "recip(ms(NOW/HOUR,ds_myDate),3.16e-11,1,1)";
which got added but did not show any impact on the search results.
As I have very little or no access to the Solr server or its logs I logged the solr query in the search function and in both cases the field was added to the query. In the former case of using boost field (throwing 400 error) the solr search url would return a path like
and in the latter method of using as queryfield would return
Would be great to know what I'm doing wrong here or how this implementation in Drupal could be done properly since 7 has a hook like
hook_apachesolr_query_alter where the date boosting could be done.