在 Dataverse 中支持三种方法来快速找到数据库中记录的数据,分别是相关性搜索,快速查找(单表或多表)和高级查找。本期将重点给大家介绍其中的【相关性搜索】。
什么是相关性搜索
Relevance Search(相关性搜索) 是 Dataverse 在模型驱动应用中提供的一种搜索方式,可以支持搜索应用内多个表的数据,并将搜索结果按相关性排序,使用相关性搜索可以带来以下优势:
快速准确的搜索结果:搜索性能要优于快速查找中的分类搜索。
提供搜索建议:在搜索框中输入内容时,可以提供一些搜索建议,帮助提升搜索体验。
模糊查找:如果使用快速查找,必须将完整的搜索内容全部输入进搜索框中,才能找到相关内容,而相关性搜索,可以实现模糊查找。
提供英文单词变体匹配:支持英文的屈折词匹配搜索(比如 stream、streaming 或 streamed)。
跨文档搜索:支持搜索存储在 Dataverse 中的文档数据(比如 PDF、Office 文件、HTML、XML、ZIP、EML、纯文本和 JSON ),可以搜索到这些文档中包含的文本数据。
在搜索中使用运算符:可以在搜索词中使用简单的布尔运算符创建查询,从而获得所需的结果。
智能:通过 AI 实现自然语言理解,支持拼写错误检查、常见缩写和同义词,从而帮助更好的进行搜索。
如何使用相关性搜索
既然相关性搜索有这么多优势,那我们接下来看下如何使用它。
开启相关性搜索
相关性搜索默认是关闭的,需要管理员在环境设置中开启并进行配置。
登陆到 Power Platform 管理中心,在指定环境中点击设置 - 特性。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647510617-985069-3ba48b3352e4658e9849385688e21c79.png)
找到搜索相关的配置,然后开启相关性搜索。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647510629-843956-1b42031a50ab93e00c44cf4c93954861.png)
开启相关性搜索后大约需要10分钟左右生效。当我们还没开启相关性搜索的时候,在模型驱动应用中是看不到顶部的搜索框的。
只有开启了相关性搜索,才能看到它。当我们点击搜索框时,会在下拉列表中出现最近搜索的3个内容和最近访问的7条记录。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647510641-720841-bab8ea66ff39db49c17975767db07d05.png)
配置相关性搜索
当我们尝试搜索内容时,发现找不到结果,这是因为还没有进行配置。
我们需要在经典解决方案配置中,找到实体并进行相关性搜索的配置。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647510653-136886-42915bf8285759f8411d49a327a2b6d1.png)
只有被选择的实体表,才能出现在相关性搜索中,需要注意的一点是相关性搜索总共是有1000个字段/列的限制(系统会占用50个,最多可以配置950个),所以我们要根据实际情况,选择希望被添加到搜索结果中的表。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647510662-73828-968c0e894dfe04826016c6b4e1f3eb3c.png)
保存完配置后,需要在设置界面点击上方的发布自定义选项。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647510670-151428-b3af6841f32c65115a9b5d2d1270e404.png)
这时候我们回到模型驱动应用,使用相关性搜索。会发现还是搜索不到 “阿豪”。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647510678-765271-66ebad47035b67d14deb481b2078182a.png)
但是已经能够搜索班级信息了。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647510685-718900-db2fef30861a9ecc38a89394b9b94699.png)
而且我们通过学号搜索的时候,也能找到学生信息。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647510692-359734-d65b8156e21b0ba051242e66271dab4b.png)
配置列的相关性搜索
这是因为我们把表的相关性搜索配置上以后,还需要配置列的相关性搜索。
这需要在每个表的快速查找视图 Quick Find View 中配置。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647510701-281339-8cafc586b0f9747c564eb28e91864197.png)
默认情况下,表的Name 主名称列会被配置为查找依据,而学生表的名称列是学号,所以能通过学号进行相关性搜索。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647510709-158713-7fb779432f29276e02f801a9e6d85519.png)
那我就只需要编辑下查找列,把我希望搜索到的列添加进来。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647510717-518057-b5623cea93bd152f970661bd853fd72e.png)
另外也可以在视图中添加上相关的列,在视图中直接添加的列,会作为相关性搜索的展示结果,呈现到应用界面中。全部配置完成后,点发布。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647510725-615840-c434176e5808608fc5019c3056f88b89.png)
这个时候我们再去模型驱动应用中进行搜索,就可以正确查找阿彪了。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647510732-751522-ac231d2207447165ad81687bbefa36ae.png)
在搜索框中使用运算符
另外还有一些有意思的搜索方式,比如之前提到的在搜索框中应用运算符。
当我们直接搜索“男”的时候,会出现所有的男性的学生。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647510741-907752-02ea121632cc1700554783cfd5d977e5.png)
但是如果我用了运算符,就可以这样输入 “男 + -阿彪”,这表示搜索男的数据,但同时需要排除阿彪。这时候就会出现下图的结果。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647510749-770984-842572515a351b53b7fb9b618de3e0e7.png)
配置筛选列
当我们在 Dataverse 使用相关性搜索找到结果后,可以从结果当中使用筛选器来精确筛选其中的内容。
默认提供了 Owner , Modified On 和 Created On 三个字段进行筛选,而其他字段都是可以进行配置的。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647510758-136618-1ea6945931266e60681f28f0ba2a1e91.png)
我们可以在当前模型驱动应用中,点击右上角的设置- Personalization Settings
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647510765-776721-6d3756fef5c9e83b6228daf539f2f3f5.png)
这将会打开模型驱动应用的个性化设置窗口,在这里我们可以设置 Facts and Filters就是配置筛选项的意思 。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647510774-404617-a775575466299b6426b2c9459a8c9f17.png)
可以看到在学生表中目前选中了两个列用来筛选,分别是性别和年龄。为什么只会出现这两个字段,是由于筛选项是根据我们在快速查找视图中添加的列来决定的。他会在排除了所有文本类型的列后,保留前4个非文本类型的列,用作筛选项。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647510783-655477-95f432704de839d616842b6234979eee.png)
如果我们把性别删除掉,只保留年龄,那么界面中的筛选项也会相应发生变化。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647510799-432898-98f6eef8ee6995150fc1326a2d49cdd2.png)
直接在搜索框中使用快速操作
在搜索过程中,根据结果的类型 Dataverse 会自动在内容旁边出现一些常用的操作快捷按钮,让用户无需跳转到详情页就可以实现一些常用的操作。比如在搜索到 Account 表中数据的时候,会在旁边出现分配,共享和发送邮件三个快捷操作。目前只有标准的 Account ,Contact , Appointment, Task, Phone Call 和 Email 表支持快速操作。
![](https://forum.power-platform.cn/assets/files/2022-03-17/1647510809-870437-d6a25a30720c6c8a67564b5d1f717603.png)
相关性搜索限制
虽然可以通过输入“阿彪”,“男”这样的文字查找学生信息。但是当我输入 22 时,却显示没有相应的结果。这是因为相关性搜索是基于文本的,只能对数据类型为单行文本、多行文本、选择或查找的列执行搜索。不会搜索类型为数字、日期和文件的列。另外相关性搜索的一些AI能力,比如拼写错误的改正,同义词,变体等等只适用于英文环境。
相关性搜索背后的机制
相关性搜索最早是2016年在 Dynamics 365 中推出的功能,它的底层是采用 Azure 认知搜索提供的支持。Azure 认知搜索是 Azure 上的搜索服务,可以快速创建索引,添加认知技能,搜索结构化和非结构化数据,从而实现智能的全文搜索引擎。