88250

          Java

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            82 隨筆 :: 0 文章 :: 5 評論 :: 0 Trackbacks

          有時我們需要隨機地獲取數據記錄(實體),比如博客程序中的“隨機文章”的實現。

          目前 GAE 并沒有 API 可以直接獲取隨機實體,要實現這樣的需求我們只能自己想辦法了 :-)

          在 stackoverflow 上也有人提過該問題,總結如下:

          • Generate and store a random number on your entities as you create them, then pick a random number and look (via a query) for the closet record(s) to it.
          • Implement some mechanism to ensure your entity ids are "densely" populated, then fetch within the known range using keys.
          • Periodically generate random lists of the entities and return entities from those lists. This may take the form of a stack that entities are popped off of, or as actual lists that are returned.

          目前 B3log Solo 在處理“隨機閱讀”上采用的是方法一,即在每個文章實體上添加一個屬性保存 0-1 的隨機浮點數。

          在獲取隨機文章時生成一個 0-1 的隨機數(mid)作為查詢條件,以此查詢條件作為邊界(0 <= mid <=1)來過濾實體保存的隨機值屬性。

          這個方法基本可以達到隨機的效果了,為了讓隨機的效果更動態一點,我們可以考慮經常更新文章實體中的隨機浮點值:

          • 訪問文章時(即在更新文章瀏覽次數時一并更新該文章的隨機浮點值)
          • 后臺定時任務(獲取一定數量的隨機文章然后更新它們的隨機浮點值)
          • 用戶做文章更新時

          加上以上處理后,隨機的效果比較好了 :-)



          本文是使用 B3log Solo簡約設計の藝術 進行同步發布的
          原文地址:http://88250.b3log.org/get-gae-random-entities.html
          posted on 2011-01-10 21:16 88250 閱讀(233) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 祥云县| 鄂伦春自治旗| 稻城县| 沂源县| 长垣县| 天台县| 邮箱| 莎车县| 察雅县| 阳泉市| 札达县| 临猗县| 东平县| 许昌县| 宜丰县| 邵阳市| 宾阳县| 涡阳县| 东海县| 木兰县| 黔东| 合水县| 大邑县| 山东省| 游戏| 拜城县| 稻城县| 土默特左旗| 南昌市| 榆树市| 临洮县| 东平县| 高雄县| 福鼎市| 改则县| 湟中县| 新竹县| 白山市| 巴彦淖尔市| 新丰县| 富民县|