在Solr中存储坐标的正确方法

J.Z*_*Zil 5 lucene solr

我付了第三方编码器为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" />
Run Code Online (Sandbox Code Playgroud)

我的网站通过JSON提交给lat_lng_0_coordinate和latlng_1_coordinate,但没有任何内容提交给latlng.

此外,我的schema.xml中没有提到"latlng",所以就像我看到的那样,它并不像在那里有一个组合或连接函数.

所以,我的问题是,latlng有目的还是让编码器误入歧途?

Par*_*ade 5

latlng字段类型定义为位置.位置字段的定义如下.

<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>
Run Code Online (Sandbox Code Playgroud)

它需要使用_coordinate后缀创建动态字段.

在您的示例中,latlng_0_coordinate应该用于lattitude字段和latlng_1_coordinate经度字段.

然后,通过使用Spatial查询,您可以使用latlng字段.

例如,为了在给定点的5km内找到最近的位置,您可以使用以下查询.41.431,28.431只是我写的随机位置.

{!geofilt sfield=latlng}&pt=41.431,28.431&d=5
Run Code Online (Sandbox Code Playgroud)

因此,它不是一个错误,它是有目的的.

另请参阅Solr文档:https://wiki.apache.org/solr/SpatialSearch#QuickStart

  • solr 8.1.1 中 subFieldSuffix="_coordinate" 的替代方案应该是什么 (3认同)