DSE:地理位置,即纬度和经度在 cassandra 中存储为不同的字段
Posted
技术标签:
【中文标题】DSE:地理位置,即纬度和经度在 cassandra 中存储为不同的字段【英文标题】:DSE: Geo location i.e latitude and longitude is stored as different fields in cassandra 【发布时间】:2018-11-30 08:51:40 【问题描述】:我正在从 Apache Cassandra 升级到 Datastax Cassandra。计划在我的一张桌子上使用位置搜索功能。
当前表如下所示
CREATE TABLE tweets (
id INT PRIMARY KEY,
user TEXT,
body TEXT,
time TIMESTAMP,
latitude FLOAT,
longitude FLOAT
);
在示例 Datastax Solr config 中,我看到纬度和经度应该属于同一列。有没有办法可以索引 纬度和经度分开以便Solr能看懂?
【问题讨论】:
【参考方案1】:我认为您可以通过使用Field Input Transformer (FIT) 来实现这一点 - 它允许转换提交给 Solr 的文档,因此您可以同时获取坐标并从中创建一个字段。请检查链接的文档 - 它有示例代码,应该不难实现。
附:您可以使用 RPT (RecursivePrefixTree) 而不是 LatLong 类型 - 它可能更有效。我也有 an example 如何在 DSE 中配置此字段类型(尽管我在 DSE 核心中使用 DSE 的 PointType
)。
【讨论】:
【参考方案2】:对于 solr 中的空间查询,您需要将纬度和经度逗号分隔存储在具有位置类型的字段中。
如果您尝试在字段类型位置中仅放置单个值,则会出现错误,如果您想使用 solr 的空间搜索,那么您必须将两者存储为仅在位置类型中以逗号分隔。
您可以使用 pfloat 或 pdouble 数据类型将这两个值存储在不同的字段中,但您不能使用 solr 的空间搜索功能来查找最近距离。
【讨论】:
以上是关于DSE:地理位置,即纬度和经度在 cassandra 中存储为不同的字段的主要内容,如果未能解决你的问题,请参考以下文章