【问题标题】:Fast lookup for autocomplete list based on large dictionaries基于大字典的自动完成列表快速查找
【发布时间】:2014-08-15 02:16:59
【问题描述】:

我们正在寻找一种技术,以实现基于大型词典(国家、城市、地区、组织、对象)的自动补全列表的快速搜索。

  • 国家/地区 150 行
  • 城市 300 000 行
  • 区域 70 000 行
  • 组织 500 000 行
  • 对象 50 000 行

主要要求 1.过滤器字段应该是所有字典的一个 2.用户输入应该导致显示完成列表 3. 预计每秒负载超过200个请求

首选技术nginx、php、windows服务器

考虑到缓存目录的数量来制作结果并将它们放入 memcached 是不可能的

提示,如何解决问题

【问题讨论】:

  • 一种可能的解决方案是使用 Solr 将您的字典组合到一个搜索索引中。 Solr 还可以很好地水平扩展,因此您可以根据需要增加容量。
  • 我也会推荐 Elasticsearch 而不是 Solr。它要简单得多(尤其是在缩放方面),但具有相同的功能。
  • 我没有使用这些技术的经验。他们可以在Windows下安装吗?
  • 它们都是用 Java 实现的,所以是的,它们在 Windows 上运行。

标签: php sql autocomplete cassandra memcached


【解决方案1】:

为像您这样的大型数据集实施快速自动完成可能具有挑战性。我没有使用 Elasticsearch/solr 进行自动完成,但它们是可能的解决方案。不过我更喜欢 Elasticsearch。

您还可以尝试使用 Redis 作为索引存储来实现自动完成功能。 Redis 确实提供了相同的演示 http://autocomplete.redis.io/ 但 Windows 不支持 redis。

另外我建议不要使用 PHP。出于性能原因,而是使用 Java/C#。

如果您不想自己实现,可以使用专门为此目的编写的名为“Autocomplete as a Service”的服务。您可以在此处访问它 - www.aaas.io。它确实支持大型数据集,您也可以应用过滤器。

免责声明:我是它的创始人。如果当前的计划不符合您的需要,您可以给我发电子邮件。我很乐意为您提供服务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多