DSE:地理位置,即纬度和经度在Cassandra中存储为不同的字段



我正在从Apache Cassandra升级到Datastax Cassandra。计划在我的一个表上使用位置搜索功能。

当前表如下所示

CREATE TABLE tweets (
id INT PRIMARY KEY,
user TEXT,
body TEXT,
time TIMESTAMP,
latitude FLOAT,
longitude FLOAT
);

在示例Datastax Solr配置中,我看到纬度和经度应属于同一列。有没有办法让我索引 纬度和经度分开,以便Solr可以理解?

我认为你可以通过使用字段输入转换器(FIT(来实现这一点 - 它允许转换提交给Solr的文档,所以你可以获取两个坐标并从中创建单个字段。 请检查链接的文档 - 它有示例代码,应该不难实现。

附言而不是LatLong类型,你可以选择RPT(递归前缀树(代替 - 它可能更有效。我还有一个如何在 DSE 中配置此字段类型的示例(尽管我在 DSE Core 中使用 DSE 的PointType(。

对于 solr 中的空间查询,您需要在具有类型位置的字段中存储纬度和经度逗号。

如果您尝试在字段类型位置中仅放置单个值,则会给您错误,如果您想使用 Solr 的空间搜索,则必须将两者存储为逗号分隔的位置类型。

您可以使用数据类型 pfloat 或 pdouble 将这两个值存储在不同的字段中,但不能使用 solr 的空间搜索功能来查找最近的距离。

最新更新