public RecursivePrefixTreeStrategyDistanceCustomScoreQuery(Query subQuery, RecursivePrefixTreeStrategy strategy, Point origin, String shapeField) : base(subQuery) { _strategy = strategy; _origin = origin; _cacheProvider = new PointPrefixTreeFieldCacheProvider(_strategy.GetGrid(), shapeField, 255); }
public RecursivePrefixTreeStrategyDistranceCustomScoreProvider(IndexReader reader, RecursivePrefixTreeStrategy strategy, PointPrefixTreeFieldCacheProvider cacheProvider, Point origin) : base(reader) { var ctx = strategy.GetSpatialContext(); _originPt = origin; _calculator = ctx.GetDistCalc(); _nullValue = (ctx.IsGeo() ? 180 : float.MaxValue); _cache = cacheProvider.GetCache(reader); }
public ShapeFieldCacheProvider<Point> GetCacheProvider() { PointPrefixTreeFieldCacheProvider p; if (!provider.TryGetValue(GetFieldName(), out p) || p == null) { lock (this) {//double checked locking idiom is okay since provider is threadsafe if (!provider.ContainsKey(GetFieldName())) { p = new PointPrefixTreeFieldCacheProvider(grid, GetFieldName(), defaultFieldValuesArrayLen); provider[GetFieldName()] = p; } } } return p; }