Используя Solr 7.7, я индексирую простые прямоугольные многоугольники и пытаюсь отфильтровать их по произвольному ограничивающему прямоугольнику, поэтому я использую трюк «диапазон запроса к синтаксису», который задокументирован на веб-сайте Solr.
Вот определение поля:
<fieldType name="my_geom"
class="solr.SpatialRecursivePrefixTreeFieldType"
spatialContextFactory="Geo3D"
planetModel="WGS84"
distanceUnits="kilometers"
format="WKT"
geo="true"
/>
<field name="*_geom" type="my_geom" indexed="true" stored="true" />
А вот запрос:
/select?fq=spatial_geom:[55.0260828,-115.5085624 TO 55.02646,-115.507337]&q=*:*
Я ожидаю получить только результаты, попадающие в областьопределил ограничивающий прямоугольник, но на самом деле я получаю ВСЕ документы, которые имеют ненулевое значение в поле «atial_geom ».Вот пример документа, который я не ожидаю получить (но я его получаю):
{
"spatial_geom":"POLYGON((-118.080201721669 54.5864541583249,-118.080201721669 54.5865258517606,-118.080078279314 54.5865258517606,-118.080078279314 54.5864541583249,-118.080201721669 54.5864541583249))",
...[other fields redacted]
}
Редактировать 1: Обновлен до Solr 8.0.0 и все еще сталкивается с тем жепроблема.Учитывая, что я получаю все документов (с ненулевым значением), я подозреваю, что я делаю что-то в корне неправильно, я просто не вижу этого.
Редактировать 2: Ради использования более простых чисел для двойной проверки данных неплохо, я загрузил все свои документы с поддельными полигонами, используя следующий WKT POLYGON((10 10,10 20,20 20,20 10,10 10))
, а затем запросил, используя ?fq=spatial_geom:[30,30 TO 40,40]
, и он все еще вернулсяВСЕ документы!