我希望用户输入他们的兴趣,这些兴趣可能已经在系统中,也可能不在系统中,并将它们存储在无模式数据库(具体来说是 GAE 存储)中,以便我可以轻松发现具有相似兴趣的用户。
我正在尝试做的一个类似示例是 LinkedIn 的技能表格。
我熟悉如何在 SQL 数据存储中完成此操作,但我正在尝试扩展我对无模式数据存储的了解。任何帮助将非常感激。
我希望用户输入他们的兴趣,这些兴趣可能已经在系统中,也可能不在系统中,并将它们存储在无模式数据库(具体来说是 GAE 存储)中,以便我可以轻松发现具有相似兴趣的用户。
我正在尝试做的一个类似示例是 LinkedIn 的技能表格。
我熟悉如何在 SQL 数据存储中完成此操作,但我正在尝试扩展我对无模式数据存储的了解。任何帮助将非常感激。
当用户输入新兴趣时,您检查是否已存在具有此兴趣的实体。如果是,则将此实体的 id 添加到用户的兴趣列表中。如果没有,你首先为这个兴趣保存一个新的实体,然后使用这个实体的 id。
例如,在 Java 中,使用低级 Datastore API,您可以:
public void saveUser(User user) {
Entity userEntity = user.getId() == null ? new Entity("User") : new Entity("User", user.getId());
if (user.getInterests() != null) {
// user.getInterests() returns a collection, e.g. an ArrayList<Long>
userEntity.setProperty("interests", user.getInterests());
}
datastore.put(userEntity);
}
public User getUser(Entity entity) {
User user = new User();
user.setId(entity.getKey().getId());
user.setInterests(entity.getProperty("interests"));
return user;
}
请注意,属性“interests”已编入索引,因此您可以运行查询来查找具有特定兴趣的所有用户。