在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