Fixed issues with Dispose closing the underlying Lucene.Net IndexReader and IndexSearcher classes that will throw errors if dispose is called more than once.
Being that Alexey commented the exception that is thrown by FacetDataCache, and it is unclear what input is supposed to be changed to get rid of the error message, I am again commenting this mysterious error message.
Fixed all of the issues related to the BoboTestCase.TestTime test. The main issue was that the Iterator() overload was missing from the DynamicRangeFacetHandler which caused the range strings not to be written back to their original values. The time in the test was also incorrect - it needed to be the number of milliseconds since January 1, 1970 UTC.
Restructured the TestBrowseWithDeletes test to ensure that the Lucene.Net index reader is closed before running the last test. Unfortunately, Lucene.Net throws errors if Dispose is called twice, and it makes more sense not to close the reader and allow the caller to use using statements to cleanup. It also allows continued use of the IndexReader after the BoboIndexReader is disposed.
Fixed bug in TermStringList that was using CompareTo when doing the sanity check. In Lucene.Net, they are using string.CompareOrdinal() to determine the order. So, to ensure the sanity checking exception is not thrown erroneously, changed the sanity check to use string.CompareOrdinal(). Also, since the error is fixed, I reverted the longitude facet handler configuration back to the original that uses TermStringList.
Converted all string.CompareTo(string) statements to use string.CompareOrdinal(string, string) so the culture of the current thread doesn't affect the comparison results.
Finished implementation of TermFixedLengthLongArray and TermFixedLengthLongArrayFactory.
Implemented the MapReduceResult and IBoboMapFunctionWrapper from the MapRed namespace and uncommented the code to tie it into the BrowseRequest, BrowseResult, BoboSubBrowser, MultiBoboBrowser, and BoboSearcher2 classes.