为用户构建位置信息的最佳方法是什么?我需要能够通过城市/国家过滤数百个用户。
目前我已经为位置创建了一个自由文本字符串,因为我找不到任何分布在国家/地区下的城市的宝石。顺便说一下,这是一个自定义的脚手架,而不是设计。
我应该像城市,国家一样输入自由文本,然后根据相似的字符串过滤?
谢谢
答案 0 :(得分:1)
如果您有用户的结构化数据(即地址,城市,州,国家/地区),则可以对这些数据进行过滤。例如:
WHERE city || ', ' || country ILIKE ?
如果不这样做,您仍然可以尝试假设您的用户表上的自由格式位置信息(您不清楚数据库架构):
WHERE location ILIKE ?
理想情况下,您将拆分城市和国家/地区并单独过滤:
WHERE city ILIKE ? AND country ILIKE ?
数百不应该是性能问题,但你绝对可以为其中任何一个构建索引:
CREATE INDEX city_country_on_users ON users(city || ', ' || country);
CREATE INDEX city_country_on_users ON users(location);
CREATE INDEX city_country_on_users ON users(city, country);
分别
答案 1 :(得分:1)
我不建议使用free-tex输入,因为您将获得同一城市和国家的不同可能条目,这将使过滤成为一项不可能完成的任务。使用下拉列表总是更好。
Here是使用java脚本的国家/地区的完整列表。
使用两个属性country
和state
更改location属性,并使用上一个列表填充它们。