0

Google 提供了“您的意思是……”功能,如果您拼写错误或在搜索中混淆某些内容,则可以进行替代匹配。

就我而言,我希望用户发现“最佳匹配”,即使它被方面排除在外。

例子:

假设我有一个在线游戏(类似魔兽争霸),其中个人购买或获得了一套权力和工具。

我想显示他们可以访问的所有内容的列表,以及成长为新类别所需的下一个项目。类别可以是健康、力量、防御等。

查询一:

Where can I go, or what doors can I open with the tools, experience, 
and strength I have?

查询 2:

Search for the shortest path of upgrades to get me to level 4. 
Display cost, location on map, etc.

查询 3:

There are 1,000 different ways to open this door. Some for gremlins, orcs, 
 and wizards.  What is the best way forward given the tools I own? 

研究:

我正在查看 DocumentDB 和 MSFT Azure 搜索来处理这些查询,但我还没有弄清楚

  1. 如何包含用户当前的购买/资产历史记录以提供有意义但保护隐私的结果。(不希望其他用户看到其他用户的数据)

  2. 如何获得最佳匹配,其中某些方面比其他方面更重要(弓箭比损坏的百万美元武器更有价值)

  3. 解决问题的最短路径。鉴于用户的购买历史和目标,下一步最有效的购买是什么?

4

1 回答 1

3

在 Azure Cosmos DB 上添加 Azure 搜索爬虫(通过 DocumentDB API)当然是处理全文搜索和拼写错误的一种选择 - 但是,对于您的问题中讨论的某些场景,全文搜索可能不是最合适的。

例如,最短路径问题和上面的许多示例查询可以使用Azure Cosmos DB Graph API更好地建模- 这可能会为游戏场景产生更好的延迟。

至于保护隐私——数据是通过服务器/中间层提供的,还是单个游戏客户端可以直接访问数据库?如果通过中间层,您会发现在中间层本身上实现安全性要容易得多。如果授予下游单个游戏客户端对数据库的直接访问权限,您可以使用用户和权限模型生成一组临时资源令牌- 以便下游客户端只能访问特定资源(例如文档或集合)。您需要构建一个中间层来租用和刷新临时资源令牌 - 下游客户端将使用它们来访问数据库,而不是主密钥或只读密钥。

于 2017-05-17T01:40:19.163 回答