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
...qf=tags_inline^5.0&bf=recip(ms(NOW/HOUR,ds_myDate),3.16e-11,1,1)
&bf=recip(rord(created),4,3403,3403)^200.0&fq=...
and in the latter method of using as queryfield would return
...qf=tags_inline^5.0&bf=recip(ms(NOW/HOUR,ds_myDate),3.16e-11,1,1)
&bf=recip(rord(created),4,3403,3403)^200.0&fq=...
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.