使用 Sitecore 7 中的 ContentSearch Linq API,我如何才能有效地从大约 1500 个潜在结果中随机选择 3 个搜索结果?
到目前为止,我正在考虑使用 API 返回整个 ID 列表(因为 1500 个结果并没有那么大),然后在代码中完成其余的工作。
有人可以指出我需要做什么才能直接从 Lucene 实现这一目标的正确方向吗?
如果您正在处理较小的项目子集,则使用 Fisher-Yates 或任何其他洗牌算法随机洗牌 SkinnyItems 的结果集可能是最简单的。
To shuffle an array a of n elements (indices 0..n-1):
for i from n − 1 downto 1 do
j ← random integer with 0 ≤ j ≤ i
exchange a[j] and a[i]
我对 Sitecore 7 还不太熟悉,所以如果有更简单的方法,我希望有人能提供。
您可以尝试此处描述的自定义排序选项:Lucene 2.9.2:如何以随机顺序显示结果? 然而,根据我们的经验,这并没有比随机化所有结果更好......为此,有几个选项:Linq to Entities, random order。
Stevie,阅读这个问题和答案,它可能会给你一些关于如何去做的灵感。
还建议按照Stephen Pope的建议阅读Sitecore 社区上的这篇文章