mysql - 在 j2ee Web 应用程序中查找函数

标签 mysql jsp jakarta-ee servlets search

我正在一个网络应用程序中开发一个小市场,我必须实现搜索功能。现在,我知道我可以在 mysql 中使用 MATCH 函数,或者我可以添加一些库(如 apache lucene),但这不是我怀疑的点。我正在考虑管理从搜索功能获得的一组结果(servlet 将执行此操作),因为并非所有结果都应一次发送到客户端,所以我想将它们分开在某些页面中。我想知道什么是更有效的做法,如果我更喜欢在数据库中为客户端调用的每个页面进行搜索,或者我是否应该将结果集保存在托管 bean 中并在客户端请求新页面时访问它们结果。谢谢(我希望我的英语足够容易理解)

最佳答案

您应该问的问题是“您可以在内存中存储多少结果”?如果您有一个小数据集,无论如何,当然可以,但您必须定义“小数据集的含义”。当您调用数据库一次并过滤内存中的结果(速度更快)时,这将有所帮助。

替代方法,对于更大/巨大的数据集,您将希望在每个用户页面请求上向数据库发出请求。这里的问题是您在每次调用时都调用数据库,因此您必须有一个优化的搜索查询,该查询将带来小块的结果(SQL LIMIT 子句)。如果您只想访问数据库一次并将结果过滤到“内存”中,则必须在应用程序和数据库之间插入一个缓存层。这样,结果就会被缓存,您可以根据缓存的结果进行过滤。缓存将位于不同的 JVM 上,以免共享内存堆空间。

这里没有 Elixir 。您只能根据您的非功能性需求来回答这个问题。

我希望这会有所帮助。

关于mysql - 在 j2ee Web 应用程序中查找函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28174222/

相关文章:

mysql - 在 mysql 列中找到第 n 个最常出现的值

java - "Import cannot be resolved"与 JSP

jakarta-ee - 在 ubuntu 中为 glassfish 服务器设置 jdk 位置

java - 如何使用 session 从一个jsp页面访问另一个jsp页面的输入值?

java - 结果集分页

java - Liquibase 变更日志不存在 - ChangeLogParseException

java - 配置 Log4j 属性路径的最佳实践

php - MySql插入查询返回2条记录

mysql - 从 MySQL 滚动删除旧行的最佳方法是什么?

php - 方法返回资源 id#14 PHP/MySQL