这个主题有几条线索,但我认为我的用例有些不同。Google App Engine上的全文搜索(Java)
我想要做什么:
- 全文搜索组件为我的GAE/J应用
- 指数尺寸小:我不需要实时更新到25-50MB左右
- 该索引,周期性重新索引是好的
- 这是为了自动完成之类的,所以它需要非常快(我得到的印象是在数据存储中实现倒排索引会引入相当长的延迟)
我的策略迄今(只是计划,还没有尝试过实施任何事情):
- 利用Lucene与RAMDirectory
- 周期性cron作业创建索引,它系列化到数据存储,存储的更新ID(或时间戳)
- 搜索的servlet加载在启动时的索引,并创建RAMDirectory
- 对每个请求该servlet检查当前更新ID并重新加载必要的索引
我很模糊的主要问题是如何在实例之间同步内存中的数据 - 这项工作,还是我错过了什么?
另外,在我开始有内存使用问题之前,我能推多少?我找不到GAE的RAM配额。 (这个指数很小,但我可以想到更多的东西我想补充)
而且,当然,关于更好的方法的任何想法?
内存GAE实例之间的分离,所以直线上升的RAM目录不会在它们之间共享。您必须在启动时为每个实例初始化它。鉴于新的备用服务器和热身请求,这可能并不那么糟糕。 – 2010-12-11 23:26:19
嗯,是的,这是我上面概述的一部分... – Dmitri 2010-12-13 08:07:12