Какой тип данных SQL следует использовать для заполнения поля Solr location (spatial) при использовании DataImportHandler?
у меня есть схема Solr, которая содержит location
поле (по умолчанию solr.LatLonType
):
<field name="latlng" type="location" indexed="true" stored="true"/>
и я пытаюсь заполнить его с помощью DataImportHandler. В Настоящее Время Я SELECT
значение как nvarchar в формате 17.74628,-64.70725
; однако он не заполняет поле Solr (оно остается пустым).
в каком типе и формате должен находиться этот столбец для обновления location
поле в Solr?
2 ответов
solr.LatLonType является многомерным типом; тип поля можно определить как:
<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
используя ваше имя поля "latlng", схема для полей координат будет выглядеть так (Обратите внимание на" subFieldSuffix", используемый для 2-мерного поля типа 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" как двойники.
предыдущий ответ работает, так как вы вручную создаете поля, которые 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" />
Если вы проверите тип поля location, вы можете обнаружить, что он использует суффикс _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 beta, и я считаю, что присутствует с Solr 3.6 или даже старше. В любом случае, просто еще одно решение!
надеюсь, что это помогает.