If someone's birthday falls on a leap year, in most countries their
birthday is considered to be February 28th unless it happens to be a
leap year. You could make the field a float, encode the day number as
59.5, so it will match where it should, and write special handling
along these lines:
<?php
$year = (int) strftime("%Y");
$date_text = ($day == 59.5 && $year % 4 == 0 && $year % 100 > 0) ?
"February 29" : strftime("%B %e", (strtotime("January 1, $year") +
((floor($day) - 1) * 86400)));
?>
Sorry, I love this kind of thing.
--
Steve
On Apr 7, 2009, at 6:00 PM, Chris Hostetter wrote:
: Hi everyone,
: I have an index that stores birth-dates, and I would like to
search for
: anybody whose birth-date is within X days of a certain month/day.
For
: example, I'd like to know if anybody's birthday is coming up
within a
: certain number of days, regardless of what year they were born.
How would I
: do this using Solr?
You've already indexed the data as a DateField? ... hmmm .... i can't
think of any way to do that type of query without writing a custom
plugin
that can iterate over all the terms in the index.
: As a follow-up, assuming this query is executed very often,
should I
: maybe be indexing something other than the birth-date? Such as
just the
: month-day pair? What is the most efficient way to do such a query?
if you aren't too picky about leap years, the simplest appraoch would
probably be to just index the day of the year they were born on as an
integery ... your query code will have to be a little smart about
moduloing arround the start/end of the year.
if you are picky about leap years .... hmmm .... i've got nothing.
-Hoss