当前位置: 首页 > 面试题库 >

使用Java自动完成,Redis,Elastic Search,Mongo

赵高雅
2023-03-14
问题内容

我必须使用500,000个以上的名称来实现自动完成功能,以后可能会增加到400万个以上的名称。

后端是使用Spring的Java REST Web服务调用。我应该使用 MongoDBRedis 还是
Elasticsearch 来存储和查询/搜索名称?


问题答案:

这是一个关键的搜索用例,MongoDB和Redis非常适合基于键的查找,而不是用于搜索目的,而Elasticsearch是专门针对此类用例构建的分布式搜索引擎。

在选择系统之前,您应该了解功能在内部的工作方式,并且要在选择它的考虑因素以下。

功能的非功能性要求

  1. 每秒的搜索查询总数(QPS)是多少?
  2. 您更新文档的频率(即示例中的名称)。
  3. 名称更新后出现在搜索结果中的SLA是什么?
  4. 您的搜索结果的SLA。

一些功能要求。

  1. 自动完成应如何显示名称的前缀,中缀?
  2. 在向他们显示自动完成结果之前,最小化用户应键入的字符数。
  3. 以上要求可以多久更改一次。

Elasticsearch在反向索引中建立索引的文档,并处理令牌匹配(可以轻松自定义以满足业务需求),因此搜索速度超快。Redis和MongoDB在内部没有这种结构,因此不应在此用例中使用。您不应该对选择Elasticsearch来实现自动完成功能有任何疑问。

由于自动完成是必不可少的搜索功能之一,因此有一个出色的博客,您应该阅读该博客以了解Elasticsearcg提供的不同方法及其折衷方法。



 类似资料:
  • 问题内容: 如何使用Redis实现自动完成功能? 比如说我有一个数组。当我型我得到 我希望你明白这一点。我如何有效地使用redis命令来实现这一点(如果可能,但我认为是)。如果我能通过telnet尝试一些简单的命令来模仿这种行为,那就太好了。 谢谢 问题答案: 如果您要处理的是大型数据集,建议您考虑将其实现。我将一小部分Ruby做到了这一点: 例如: 在Wikipedia的Tries条目上阅读有关

  • 问题内容: 我必须使用500,000个以上的名称来实现自动完成功能,以后可能会增加到400万个以上的名称。 后端是使用Spring的Java REST Web服务调用。我应该使用 MongoDB , Redis 还是 Elasticsearch 来存储和查询/搜索名称? 问题答案: 这是一个关键的搜索用例,MongoDB和Redis非常适合基于键的查找,而不是用于搜索目的,而Elasticsear

  • 问题内容: 也许您可以解决一些Ajax问题。 我有AUTO COMPLETE代码-我输入城市名称,该代码会自动为我完成城市名称,还获取城市ID,并应将其放入隐藏的输入字段中(名称=“ cityID”)…但它没有做到这一点。 你能告诉我为什么吗? html代码: 服务器端(仅输出): 脚本: 您可以在这里找到完整的JS: 问题答案: 尝试对ajax_response_city使用div而不是span

  • 我已经使用Spring Data Solr索引了一个位置数据库。我有以下字段: 我试图实现一个自动完成功能。我的ajax调用由一个控制器处理,该控制器调用一个存储库: 这适用于像“加利福尼亚”或“洛杉矶”这样的搜索。但是当我尝试像“洛杉矶”这样的多个单词时,我会得到一个例外: 严重:Servlet。路径为[/xxx]的上下文中servlet[spring mvc]的服务()引发异常[请求处理失败;

  • 问题内容: 好吧,我一直在为此绞尽脑汁(这太糟糕了),但是我一直尝试阅读我所能而且仍然无法使它起作用的内容。 试图用jQuery UI做自动完成 我的json看起来像这样 我正在尝试将此信息用作自动完成的来源。我得到的响应对象很好,我很难以正确的格式获得它,因此我可以将“ ”放在与“值”相关联的隐藏字段中,该字段需要显示为“值”的一部分落下。 尝试了一百万种不同的方法,但最近的尝试却在下面 请多谢

  • 问题是我使用的是PhpStorm IDE。Laravel项目由nwidart/laravel模块管理。 但是,PhpStorm不处理基本的Laravel函数。例如:,对于自己的模型: 在\ Modules \ Companies \ Models \ Companies _ addresses中找不到方法“findorfail” 我执行了以下操作以启用自动完成: 安装https://github.