Google提供了“您的意思是......”功能,允许您在拼写错误或混淆搜索内容时进行替代匹配。
就我而言,我希望用户发现“最佳匹配”,即使它被方面排除在外。
示例:
假设我有一个在线游戏(类似魔兽),个人购买或获得一套权力和工具。
我希望显示他们可以访问的所有内容的列表,以及成长为新类别所需的下一个项目。类别可以是健康,力量,防御等。
查询1:
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搜索来处理这些查询,但我还没弄明白
如何包含用户当前的购买/资产历史记录,以提供有意义且隐私保护的结果。 (不希望其他用户看到其他用户的数据)
如何获得最佳匹配,其中一些方面比其他方面更重要(弓箭的价值超过损坏的百万美元武器)
解决问题的最短途径。鉴于用户购买历史和目标,下一次购买的最有效方法是什么?
答案 0 :(得分:3)
通过Azure Cosmos DB添加Azure搜索爬虫(通过DocumentDB API)当然是处理全文搜索和拼写错误的选项 - 但是,全文搜索可能不适合您在讨论的某些场景中使用问题
例如,最短路径问题和上面的许多示例查询可以使用Azure Cosmos DB Graph API更好地建模 - 这可能会为游戏场景带来更好的延迟。
至于保护隐私 - 是通过服务器/中间层提供的数据,还是个别游戏客户端可以直接访问数据库?如果通过中间层,您会发现在中间层本身实现安全性要容易得多。如果授予对下游单个游戏客户端的数据库的直接访问权限,则可以生成一组temporary resource tokens using the user and permissions model - 以便下游客户端只能访问特定资源(例如文档或集合)。您需要构建一个中间层来租用和刷新临时资源令牌 - 下游客户端将使用这些来访问数据库而不是主数据库或只读密钥。