首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在大量字符串上执行多个搜索的设计决策-- google应用程序引擎

在大量字符串上执行多个搜索的设计决策-- google应用程序引擎
EN

Stack Overflow用户
提问于 2010-08-31 19:52:27
回答 1查看 36关注 0票数 1

这是一个场景。用户(web环境)可以用外语导入文档。当显示文档时,应用程序突出显示用户尚不知道的单词。然后,用户可以标记一些已知的单词,并将它们添加到他的字典中。

因此,基本上我们有一个表示文档中单词的String列表,以及一组表示用户已知单词的String(他的字典)。现在,对于List (文档)中的每个字符串,我们需要确定单词是否存在于集合中。听起来很简单,但是应该如何在数据库中建模呢?

这组已知的单词需要是持久化的,允许用户在每个会话中添加单词。这组已知的单词可能会长到上千个字符串。输入的文档可以有数百个单词。

我看到了两种解决方案,它们都不是很好的扩展。我为每个用户创建了一个字典类,其中包含一组已知的单词。

代码语言:javascript
复制
@PersistenceCapable(identityType=IdentityType.APPLICATION)
public class UserDictionary {
    @PrimaryKey
    @Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY)
    Long id;
    @Persistent String userId;      

    @Persistent Set<String> knownWords;
}

  1. I可以查询数据库中导入的文档中的每个单词,以检查它是否存在于knownWords集中。由于文档可能有数百个单词,此解决方案将迫使我查询数据库、数百个times.
  2. Retrieve、整个UserDictionary类以及潜在的数千个单词,并快速检查文档中的每个单词(如果它存在于knownWords集中)。检查将是快速的,但我必须将整个字典保存在用户会话中--吃掉服务器内存,而且由于应用程序引擎需要反序列化整个集合,检索成本将是巨大的。

我不喜欢above...any的任何其他想法?

EN

回答 1

Stack Overflow用户

发布于 2010-09-09 12:36:29

你为什么要在数据库中建模呢?相反,将整个文档和整个字典加载到内存中,并在其中执行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3612674

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档