我正在一个网络应用程序中开发一个小市场,我必须实现搜索功能。现在,我知道我可以在 mysql 中使用 MATCH 函数,或者我可以添加一些库(如 apache lucene),但这不是我怀疑的点。我正在考虑管理从搜索功能获得的一组结果(servlet 将执行此操作),因为并非所有结果都应一次发送到客户端,所以我想将它们分开在某些页面中。我想知道什么是更有效的做法,如果我更喜欢在数据库中为客户端调用的每个页面进行搜索,或者我是否应该将结果集保存在托管 bean 中并在客户端请求新页面时访问它们结果。谢谢(我希望我的英语足够容易理解)
最佳答案
您应该问的问题是“您可以在内存中存储多少结果”?如果您有一个小数据集,无论如何,当然可以,但您必须定义“小数据集的含义”。当您调用数据库一次并过滤内存中的结果(速度更快)时,这将有所帮助。
替代方法,对于更大/巨大的数据集,您将希望在每个用户页面请求上向数据库发出请求。这里的问题是您在每次调用时都调用数据库,因此您必须有一个优化的搜索查询,该查询将带来小块的结果(SQL LIMIT
子句)。如果您只想访问数据库一次并将结果过滤到“内存”中,则必须在应用程序和数据库之间插入一个缓存层。这样,结果就会被缓存,您可以根据缓存的结果进行过滤。缓存将位于不同的 JVM 上,以免共享内存堆空间。
这里没有 Elixir 。您只能根据您的非功能性需求来回答这个问题。
我希望这会有所帮助。
关于mysql - 在 j2ee Web 应用程序中查找函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28174222/