GeoHashFilteredDocIdSet does not work at all
--------------------------------------------
Key: LUCENENET-448
URL: https://issues.apache.org/jira/browse/LUCENENET-448
Project: Lucene.Net
Issue Type: Bug
Components: Lucene.Net Contrib
Affects Versions: Lucene.Net 2.9.4
Environment: Windows 7 x64
Reporter: Jeff Johnson
Fix For: Lucene.Net 2.9.4
The GeoHashFilteredDocIdSet is assuming the values are always in the cache which is wrong.
A proposed fix for the method is listed here for GeoHashDistanceFilter.cs:
public GeoHashFilteredDocIdSet(DocIdSet innerSet, string[] geoHashValues, Dictionary<string,
double> distanceLookupCache, double lat, double lng, int docBase, double distance, Dictionary<int,
double> distances)
: base(innerSet , (docid) => /* was: public override Match */
{
String geoHash = geoHashValues[docid];
double[] coords = GeoHashUtils.Decode(geoHash);
double x = coords[0];
double y = coords[1];
double cachedDistance;
distanceLookupCache.TryGetValue(geoHash, out cachedDistance);
double d;
if (cachedDistance > 0)
{
d = cachedDistance;
}
else
{
d = DistanceUtils.GetInstance().GetDistanceMi(lat, lng, x, y);
distanceLookupCache[geoHash] = d;
}
if (d < distance)
{
distances[docid + docBase] = d;
return true;
}
return false;
})
{
_geoHashValues = geoHashValues;
_distances = distances;
_distance = distance;
_docBase = docBase;
_lng = lng;
_lat = lat;
_distanceLookupCache = distanceLookupCache;
}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
|