我们运行的网络服务器必须从相当大的目录中提供文件,因此通过简单的通配符搜索(如“abcd*jklp*”)查找文件会产生严重的性能问题。
有没有办法(技巧或库)来加速 Java 中的文件搜索?如果没有,是否有一个简单的缓存解决方案,使得每次搜索仅执行一次,除非应用程序显式清空缓存?
最佳答案
当您的 Web 应用程序启动时(以及此后每隔 x 分钟)将您打算在静态变量中提供的每个文件缓存起来。当用户搜索特定文件时,搜索您的静态缓存,而不是在实际文件服务器上运行搜索。
如果您只允许搜索文件名,则缓存所有内容都非常有效。您可以将每个文件路径存储在列表/数组中。如果列表/数组已经排序,您可以使用二分搜索进行用户搜索查询。如果存在通配符,则生成正确的正则表达式。
对于文件内容的全文搜索,静态存储所有内容是不可行的。做一些懒惰的事情,例如使用数据库备份文件或购买 GSA http://www.google.com/enterprise/search/gsa.html 等搜索设备
关于java - Java 中简单文件搜索的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9383189/