我有一个Azure搜索索引,包含可以"发生的文档。在多个地区任意次数。例如,Document1
在Region1
中有5次出现,在Region2
中有20次出现。 Document2
在Region1
中有54次,在Region3
中有10次。 Document3
在Region3
中有10次出现。我们希望使用Azure搜索进行搜索和建议,但将顺序基于区域上的出现次数。例如,Document
中用户对Region1
的搜索应按Document2
,Document1
,Document3
的顺序返回,因为Document2
有54次出现在该地区,Document1
有5次出现而Document3
没有。
[
{ 'name': 'Document1', 'regions': ['Region1|5', 'Region2|20'] },
{ 'name': 'Document2', 'regions': ['Region1|54', 'Region3|10'] },
{ 'name': 'Document3', 'regions': ['Region3|10'] }
]
我很难弄清楚如何构建索引,或者甚至可以使用Azure搜索。请注意,区域数量可能达到数十万。我可以更改中心点的区域并使用地理空间功能,但我仍然不知道如何打印数据或查询数据。
构建索引的最佳方法是什么?如何使查询成为可能?
答案 0 :(得分:1)
tl; dr - 根据我的一些假设,你可能会有一个解决方案。请继续阅读,如果可能的话,尝试提供一些围绕我的假设的验证,以便给出更好的答案(如果存在这样的答案)。
不幸的是,Azure搜索没有针对您的方案的开箱即用方法。可能会有一个解决方法 - 而不是像['Region1|5', 'Region2|20']
这样的区域集合,您可以尝试构造文档,使其看起来像['Region1', 'Region1',...., 'Region2', 'Region2', ...]
(也就是说,使集合包含Region1的{{1}}和 m 元素的> n 元素,在您的情况下 n = 5且 m = 10。
然后您应该只能使用用户来自的 Region 进行搜索,并且我相信应根据哪个文档的集合列(Region2
)包含更多事件来对结果进行排序被查询的地区。
这种方法可以通过两种方式帮助您:
另外,仅供参考我建议您查看scoring profiles feature
尤其是regions
函数,看看它是否对您有用。