Details

Type: Improvement

Status: Resolved

Priority: Major

Resolution: Fixed

Affects Version/s: None

Component/s: modules/spatial

Labels:None

Lucene Fields:New
Description
GeoPortal's area overlap algorithm didn't consider lines and points; they end up turning the score 0. I've thought about this for a bit and I've come up with an alternative scoring algorithm. (already coded and tested and documented):
New Javadocs:
/** * The algorithm is implemented as envelope on envelope overlays rather than * complex polygon on complex polygon overlays. * <p/> * <p/> * Spatial relevance scoring algorithm: * <DL> * <DT>queryArea</DT> <DD>the area of the input query envelope</DD> * <DT>targetArea</DT> <DD>the area of the target envelope (per Lucene document)</DD> * <DT>intersectionArea</DT> <DD>the area of the intersection between the query and target envelopes</DD> * <DT>queryTargetProportion</DT> <DD>A 01 factor that divides the score proportion between query and target. * 0.5 is evenly.</DD> * * <DT>queryRatio</DT> <DD>intersectionArea / queryArea; (see note)</DD> * <DT>targetRatio</DT> <DD>intersectionArea / targetArea; (see note)</DD> * <DT>queryFactor</DT> <DD>queryRatio * queryTargetProportion;</DD> * <DT>targetFactor</DT> <DD>targetRatio * (1  queryTargetProportion);</DD> * <DT>score</DT> <DD>queryFactor + targetFactor;</DD> * </DL> * Note: The actual computation of queryRatio and targetRatio is more complicated so that it considers * points and lines. Lines have the ratio of overlap, and points are either 1.0 or 0.0 depending on wether * it intersects or not. * <p /> * Based on Geoportal's * <a href="http://geoportal.svn.sourceforge.net/svnroot/geoportal/Geoportal/trunk/src/com/esri/gpt/catalog/lucene/SpatialRankingValueSource.java"> * SpatialRankingValueSource</a> but modified. GeoPortal's algorithm will yield a score of 0 * if either a line or point is compared, and it's doesn't output a 01 normalized score (it multiplies the factors). * * @lucene.experimental */
Issue Links
 is depended upon by

LUCENE5714 Improve tests for BBoxStrategy then port to 4x.
 Resolved
 is required by

SOLR6183 Add spatial BBoxField using BBoxSpatialStrategy
 Resolved
The attached patch is a partial patch from
LUCENE5714including just the AreaSimilarity class, and the new test for BBoxStrategy which includes the test for this new similarity showing examples scores. Developing it surfaced a variety of dateline related bugs when computing intersection width & height.