Database 数百万行自动完成字段-实现想法?

Database 数百万行自动完成字段-实现想法?,database,memcached,Database,Memcached,我有一个位置自动完成字段,自动完成所有国家、城市、社区、村庄、邮政编码。这是我为我的网站构建的位置跟踪功能的一部分。所以你可以想象这个列表将有数百万行。预计至少有2000万以上的村庄和港口代码。为了使自动完成工作良好,我将使用memcached,这样我们就不会总是点击数据库来获取此列表。它将被大量使用,因为这是网站的主要功能。但问题是: 是否只有1个instance的列表存储在memcached中,而不考虑用户获取信息,或者是否需要为每个instance分别维护一个实例?因此,如果说2000万人

我有一个位置自动完成字段,自动完成所有国家、城市、社区、村庄、邮政编码。这是我为我的网站构建的位置跟踪功能的一部分。所以你可以想象这个列表将有数百万行。预计至少有2000万以上的村庄和港口代码。为了使自动完成工作良好,我将使用memcached,这样我们就不会总是点击数据库来获取此列表。它将被大量使用,因为这是网站的主要功能。但问题是:

是否只有1个instance的列表存储在memcached中,而不考虑用户获取信息,或者是否需要为每个instance分别维护一个实例?因此,如果说2000万人同时使用它,这与仅1人使用位置自动完成会有所不同吗?我对如何实现这个位置自动完成的其他想法持开放态度,以便它能够很好地执行


或者我可以这样做:当用户在后台登录时,我会将列表发送给他们,这样当他们到达自动完成文本字段时,他们的计算机就可以立即加载了?

使用NGram(或EdgeNGram)查看一下(或Lucene本身)标记器您可以在海量数据集上获得良好的自动完成性能。

看看(或Lucene本身),使用NGram(或EdgeNGram)标记器您可以在海量数据集上获得良好的自动完成性能。

我可以改用Sphinx吗?流程是这样的:这些是基于AJAX的字段,所以我需要从AJAX中点击它们。另一件事是我无论如何都需要GIS搜索,所以我宁愿只使用一种技术来满足所有需求,而不是支持多种技术。Solr是专门为Ajax查询设计的。我对狮身人面像了解不多,但它似乎可以与Lucene/Solr相提并论。只要浏览一下他们的网站,他们似乎就强调索引吞吐量和与关系数据库的直接集成;另一方面,Lucene似乎有更多的功能,尤其是在文本分析方面。据我所知,它们的搜索性能相当相似(当然,高度依赖于特定的用例)。由于它们实现了相同的数据模型,我假设它们的GIS功能也类似。我可以改用Sphinx吗?流程是这样的:这些是基于AJAX的字段,所以我需要从AJAX中点击它们。另一件事是我无论如何都需要GIS搜索,所以我宁愿只使用一种技术来满足所有需求,而不是支持多种技术。Solr是专门为Ajax查询设计的。我对狮身人面像了解不多,但它似乎可以与Lucene/Solr相提并论。只要浏览一下他们的网站,他们似乎就强调索引吞吐量和与关系数据库的直接集成;另一方面,Lucene似乎有更多的功能,尤其是在文本分析方面。据我所知,它们的搜索性能相当相似(当然,高度依赖于特定的用例)。由于它们实现了相同的数据模型,我假设它们的GIS功能也类似。