我付了第三方编码器为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有目的还是让编码器误入歧途?
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
| 归档时间: |
|
| 查看次数: |
3929 次 |
| 最近记录: |