我正在寻找Azure搜索信息服务。非常简单,我们有一个(运行.NET)和SQL上的两个表:
一条消息有1:N个收件人。
我想要一个索引来搜索消息的主题和正文,但是结果必须在当前用户是消息的接收者时被过滤。我似乎找不到一个很好的方法来实现这一点,所以它可以很好地扩展到高容量。从索引中返回所有搜索结果,然后在我的应用程序中对UserId进行过滤,将产生许多不必要的开销。为每个UserId复制的每条消息建立索引甚至更糟糕。
如何最好地实现收件人筛选的邮件搜索?
谢谢,TGM
发布于 2017-09-09 12:18:53
在类似的情况下,我在搜索索引中使用了Collection(Edm.String)数据类型。因此,索引中的示例文档如下所示:
{
messageId : 1,
subject : "Why Azure Search is cool",
body: "Just because",
recipientIds : ["123", "456", "789"]
}recipientIds字段定义为索引架构中的类型集合(Edm.String)。
然后,您可以使用“任意”和“所有”OData表达式来筛选搜索。因此,如果要查找发送给收件人id 123的消息,筛选器表达式将如下所示:
$filter=recipientIds/any(r: r eq '123')有关更多细节,请参见Azure搜索OData表达式文档。
https://stackoverflow.com/questions/46129109
复制相似问题