Solr 7.4: пример запроса и повышения с помощью overlapRatio с BBoxField - PullRequest
0 голосов
/ 24 января 2019

Я добавил тип и поле пространственного поля BBoxField в схему Solr 7.4 и теперь пытаюсь понять, как можно запросить Solr для повышения результатов с более высоким значением overlapRatio. Пример в документации, похоже, не работает для меня (и этот пример был для использования параметра основного запроса, тогда как в этом случае уже могут быть ключевые слова, используемые в основном запросе). Вот подробности: Я работаю со схемой Solr, которая содержит поле, которое мне нужно скопировать в новый BBoxField. Поле для копирования из описано ниже:

<dynamicField name="*_geom" type="location_rpt" stored="true" indexed="true"/> 

где location_rpt определяется следующим образом:

<fieldType name="location_rpt" class="solr.SpatialRecursivePrefixTreeFieldType"
               geo="true" distErrPct="0.025" maxDistErr="0.001" distanceUnits="kilometers"/>

Я добавил следующее, чтобы определить поле new BBoxField , которое я хотел бы создать:

 <dynamicField name="*_bboxtype" type="bbox" stored="true" indexed="true"/>
 <fieldType name="bbox" class="solr.BBoxField"
           geo="true" distanceUnits="kilometers" numberType="pdouble" />
 <fieldType name="pdouble" class="solr.DoublePointField" docValues="true"/> 
 <copyField source="*_geom" dest="*_bboxtype"/>

Значения отображаются правильно. Например, если у меня есть "solr_geom": "ENVELOPE(-80, -69.883331, 45, 40)" в документе solr, который я добавляю, также заполняются следующие поля:

"solr_bboxtype": "ENVELOPE(-80, -69.883331, 45, 40)",
"solr_bboxtype__minX": -80.0,
"solr_bboxtype__minY": 40.0,
"solr_bboxtype__maxX": -69.883331,
"solr_bboxtype__maxY": 45.0

Когда я пытаюсь выполнить запрос на основе примера [здесь] 1 Я не получаю никаких результатов при тестировании: select? q = {! field f = solr_bboxtype score = overlapRatio} Intersects (ENVELOPE (-80, -69.883331, 45, 40)) Есть ли ошибка в том, как я построил запрос или какую-либо часть схемы?

Что я действительно ищу, так это как я могу получить показатель overlapRatio и использовать его для повышения результатов? Если я хочу создать запрос на повышение или функцию, которая использует показатель overlapRatio для повышения документов, которые более точно перекрывают заданную ограничивающую рамку, как мне создать запрос для этого? Кроме того, мы также хотим включить запросы с поиском по ключевым словам, и мы фильтруем результаты на основе того, что пересекается с данным ограничивающим прямоугольником, поэтому ключевое слово q = уже существует как часть запроса.

Буду очень признателен за любую помощь в этом! Большое спасибо!

...