2014-10-30 57 views
0

我在我的一个应用程序中使用了GATE,并且我有几个与多租户相关的查询。我的要求如下。通过GATE实现多租户

  • 我的关键字设定,针对每个用户,并根据所用户登录在 ,我需要初始化地名与 适用的关键字。
  • 在给定时间可能会有多个用户登录我的 应用程序,我想确保多租户方法不会低效。
  • 我不想将每个用户的关键字存储在.lst 文件中,但将其存储在数据库(mongo)中,并仅在 运行时注入。

我在网上搜索了几个样本,虽然我发现了一些关于处理资源的想法,但我不知道性能如何受到影响。

非常感谢您的帮助。

由于提前,

Sajith

回答

1

这是一个有趣的用例的GATE地名。

我相信你应该做的一件事就是在创建文档时添加用户ID作为功能。这样你就可以在稍后的处理资源中创建你的MongoDB查询。

当你处理文档,你有几种选择:

  1. 创建它调用的MongoDB和复制DefaultGazetteer代码,但与覆盖“初始化”方法的自定义PR(或继承或包裹它,如果可能的话,还没有详细研究)。您应该提供您的关键字列表,而不是默认的init方法,然后设置所需的字段并调用execute()。

  2. 如果您没有太多关键字,请创建一个自定义PR(或常规脚本PR),它调用MongoDB并执行一些简单的正则表达式搜索,如the one in this thread。 他们还建议在评论中的stringsearch库。然后,只需使用开始和结束索引来自行创建查找注释。

  3. 你说你不想要但仍然可以通过默认和哈希地名词典来处理几百万字。尽管如此,您应该小心,因为如果您的注释过多,门文档可能会占用大量内存 - 在您的案例中,查找所有用户关键字。

希望这会有所帮助。