5

我花钱请了第三方编码人员为 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”,所以据我所见,它不像那里有一个 combine 或 join 函数。

所以,我的问题是,latlng 是有目的的还是编码人员把它弄错了?

4

1 回答 1

5

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

<fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/>

它需要创建带有_coordinate后缀的动态字段。

在您的示例中,latlng_0_coordinate应用于纬度字段和latlng_1_coordinate经度字段。

然后通过使用空间查询,您可以使用 latlng 字段。

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

{!geofilt sfield=latlng}&pt=41.431,28.431&d=5

结果,这不是一个错误,它是有目的的。

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

于 2012-09-21T12:27:38.330 回答