Sqlite,根据位置和相关性自动完成城市

时间:2014-01-12 19:08:22

标签: sql sqlite optimization query-optimization

我希望您就此优化提出建议:

数据: 我有一个带有+ - 3000个城市的SQLite数据库,所有这些城市都有名称和一些经度和经度。所有城市都具有相关性(基于用户访问它们的频率)。相关性是经典整数。然后,我再次将用户位置作为纬度/经度坐标。

请求: 我需要创建自动完成editBox。建议必须满足以下条件:

1)editBox中的短语必须是建议城市名称的子字符串。

2)建议必须先按相关性排序。 (经典整数排序,没问题)

3)如果相关性相同,则建议按距离用户排序。

4)显示最大值10条建议。

由于通常有很多城市具有相同的相关性,最大的问题是距离排序。

我目前的做法:

A)使用经典名称获取满足条件(1)和(2)的城市的ID和坐标:按相关性排序名称LIKE'%短语%'。

B)按相关性将结果拆分为组。使用Java中的排序按距离排序这些相关性组。

C)当有10个建议被修复时(f.e。11个相关组,都包含一个城市,因此不需要进行位置排序)停止订购。

这很有效。但有个问题。通常,很少有城市具有不同的相关性。 因此,当用户开始输入并且搜索短语中只有一两个字母时,我最终会按距离排序500个城市,只是为了获得我的10条建议,我觉得效率非常低。

有没有更好的方法来使用SQLite处理这种情况?

P.S。它在Android上运行,如果有帮助:)

0 个答案:

没有答案