我付了第三方编码器为Solr开发了一个模式,但现在我对自己有了更多的了解,我有一个问题。
目的是进行空间搜索,所以在我的模式中我有这个:
<field name="latlng" type="location" indexed="true" stored="false" />
<field name="latlng_0_coordinate" type="double" indexed="true" stored="false" />
<field name="latlng_1_coordinate" type="double" indexed="true" stored="false" />
我的网站通过JSON提交给lat_lng_0_coordinate和latlng_1_coordinate ,但没有任何内容提交给latlng 。
此外,我的schema.xml中没有提及“latlng”,所以就像我看到的那样,它并不像在那里有一个组合或连接函数。
所以,我的问题是,latlng是否有目的或编码器错误地将其置入?
答案 0 :(得分:5)
latlng字段类型定义为位置。位置字段的定义如下。
<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
需要使用_coordinate
后缀创建动态字段。
在您的示例中,latlng_0_coordinate
应用于lattitude字段,latlng_1_coordinate
用于经度字段。
然后,通过使用空间查询,您可以使用latlng字段。
例如,为了在给定点的5km内找到最近的位置,您可以使用以下查询。 41.431,28.431只是我写的随机位置。
{!geofilt sfield=latlng}&pt=41.431,28.431&d=5
因此,这不是一个错误,它是有目的的。
另请参阅Solr文档:https://wiki.apache.org/solr/SpatialSearch#QuickStart