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

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

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

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

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

Ответы [ 2 ]

15 голосов
/ 23 сентября 2011

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" как double.

3 голосов
/ 13 сентября 2012

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

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

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

<!-- 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 или даже старше.В любом случае, просто другое решение!

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

...