確率で最適解を求めるのはまた今度やろう

なあんて。どうもへらです。
とりあえず夜も深くなるどころか朝になっているのでなんとなく書いておきます。

出来たこと

  • キーワードからのサジェストキーワードを取得
    • URLフェッチからJSON形式で取得。djangoのsimplejsonをお借りして。
  • さらにそこからデータを加工してリストで保存
    • findとかreplaceとか
  • そんでもってデータストアAPIで保存
    • 重複を回避するためにトランザクションを使うなど。
      • RDBMSみたいに複合キーでユニークなんてことは出来ないので、ユニーク判断用に新たにプロパティを作るとか

とりあえず上手いこといっています。

    def chaining(self):
        query = Pair.all()
        query.filter('from_keyword =', self.word)
        chain = []
        for result in query:
            chain.append(result.to_keyword)
        if chain == []:
            q = urllib2.quote(self.word.encode('utf-8'))
            url = 'http://www.google.co.jp/complete/search?json=t&q=' + q
            #サジェストAPIにフェッチ
            result = urlfetch.fetch(url=url)
            if result.status_code == 200:
                words = simplejson.loads(unicode(result.content, 'sjis'))
                chain = self.convertChainList(words[1])
                for chain_word in self.chain:
                    db.run_in_transaction(
                                          self.__saveSuggestPair,
                                          to_keyword=chain_word,
                                          from_keyword=self.word)
            else:
                chain = False
        self.chain = chain
        return chain

try{〜}catch{〜}はあとで実装します。
とりあえず特定の条件で動いてから。んでテストにかけて例外処理を実装っと。
ってこれってちゃんとローカルにデータがある場合にURLフェッチをせずにやってるのかな……。
ログ観ればわかるけれど、それも後回し。全体が動かないと、イメェェジが。