Подтвердить что ты не робот

Какой тип данных SQL следует использовать для заполнения поля местоположения Solr (пространственного) при использовании DataImportHandler?

У меня есть схема Solr, которая содержит поле location (используя значение по умолчанию solr.LatLonType):

<field name="latlng" type="location" indexed="true" stored="true"/>

И я пытаюсь заполнить его с помощью DataImportHandler. В настоящее время я SELECT значение как nvarchar в формате 17.74628,-64.70725; однако он не заполняет поле Solr (он остается пустым).

Какой тип и формат должен содержать этот столбец для обновления поля location в Solr?

4b9b3361

Ответ 1

solr.LatLonType - многомерный тип; Вы можете определить тип поля как:

<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>

Используя ваше имя поля "latlng", схема для полей координат будет выглядеть так (обратите внимание на "subFieldSuffix", используемый для двумерного типа поля solr.LatLonType):

<field name="latlng" type="location" indexed="true" stored="true" />
<field name="latlng_0_coordinate" type="double" indexed="true" stored="true" />
<field name="latlng_1_coordinate" type="double" indexed="true" stored="true" />

"latlng_0_coordinate" должно быть широтой, а "latlng_1_coordinate" должно быть долготой. Ваш оператор select должен загружать "latlng_0_coordinate" и "latlng_1_coordinate" в качестве парных.

Ответ 2

предыдущий ответ работает, так как вы вручную создаете поля, которые Solr использует для хранения lat и long отдельно, однако для этой цели есть динамическое поле.

<!-- Type used to index the lat and lon components for the "location" FieldType --> <dynamicField name="*_coordinate" type="tdouble" indexed="true" stored="false" />

Если вы проверите местоположение типа поля, вы можете обнаружить, что он использует суффикс _координат для своих значений:

<!-- A specialized field for geospatial search. If indexed, this fieldType must not be multivalued. -->

<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>

который работает для меня в бета-версии Solr 4, и я считаю, что присутствует с Solr 3.6 или даже старше. Во всяком случае, просто другое решение!

Надеюсь, что это поможет.