java - 使用 Ehcache 自动完成

标签 java autocomplete ehcache

我正在开发的表单中有几个自动完成字段。我最大的包含近 20k 条记录,最小的包含大约 1k 条记录。到目前为止,我只是使用 TreeMap 来处理此任务,但我发现它的效率非常低。我当前的结构如下所示。

private SortedMap<String, Set<String>> cache;

public AutocompleteCacheServiceImpl() {
    cache = Collections.synchronizedSortedMap(new TreeMap<String, Set<String>>());
}

当像这样填充时,

private void populateCache(String id, String name) {
    int len = name.length();

    for (int i = 1; i <= len; i++) {
        String key = name.substring(0, i).toLowerCase();
        if(this.cache.containsKey(key)) {
            Set<String> exist = cache.get(key);
            if(!exist.contains(id)) {                
                exist.add(id);
            }                
        } else {
            Set<String> _e = new HashSet<String>();
            _e.add(id);
            this.cache.put(key, _e);
        }

    }        
}

输出 1小时 1 浩 1小时 1小时 1 栋房子

我希望用 Ehcache 之类的东西替换我的缓存实现,但是我对它不是很熟悉。我想知道是否有人对设置类似的内容有任何建议,以便击键响应时间保持在 500 毫秒或更短。

我看到了这个页面http://ehcache.org/documentation/get-started/getting-started

但也许我当前的填充方法使我忽视了更好的方法。

有人有什么想法吗?

最佳答案

如果您希望优化性能,请查看 patricia tries ,有一个实现here实现 SortedMap。

关于java - 使用 Ehcache 自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10917393/

相关文章:

jQuery jsonp 自动完成不可见的下拉项

android - Windows 7 下的 adb shell 自动完成

jquery 自动完成功能无法与 django 一起正常工作

hibernate - Hazelcast 与 Ehcache + Hazelcast 注释用于使用 Spring 和 Hibernate 在服务/dao 层进行缓存?

spring - 在一天中的特定时间而不是通过 TTL 进行缓存驱逐

java - 使用 XenServer Java API 收集 HostCPU 利用率和磁盘 I/O 速度

java - 在 Java 中访问组合的 UIMA Ruta 注释

grails - 初始化高速缓存导致 “grails run-app”失败时发生异常

Java 6 与 NTLM2

java - 初始化错误: Unable to find a @SpringBootConfiguration