在Sitecore 7中使用ContentSearch Linq API,我如何能够有效地从大约1500个潜在结果中随机选择3个搜索结果?Sitecore 7 ContentSearch - 随机排序
到目前为止,我正在考虑使用API返回一个完整的ID列表(看起来1500个结果不是那么大),然后在代码中完成其余部分。
有人可以指出我需要做什么才能直接从Lucene实现这个目标的正确方向吗?
在Sitecore 7中使用ContentSearch Linq API,我如何能够有效地从大约1500个潜在结果中随机选择3个搜索结果?Sitecore 7 ContentSearch - 随机排序
到目前为止,我正在考虑使用API返回一个完整的ID列表(看起来1500个结果不是那么大),然后在代码中完成其余部分。
有人可以指出我需要做什么才能直接从Lucene实现这个目标的正确方向吗?
Stevie,请阅读此question and answer,这可能会为您提供一些有关如何去做的启示。
的建议。如果你正在处理项目的较小的子集,为您随机洗牌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: How to show results in random order? 但这并没有进行任何比随机化所有的结果更好,在我们的经验...... 对于有几种选择:Linq to Entities, random order。
感谢您的回答,但这似乎是指检索结果的总数,我已经成功地做了。我的(也许是奇怪的)情况是我希望我的结果是随机排序的,而且我看不到链接文章的哪个区域可以帮助我做到这一点? –
好吧,这不帮助 “.Where(item => item.Content ==”banana“);” 只是出于好奇,你试图得到的3个结果是什么?他们有没有共同点可以用来过滤? – Shriroop