Home > python Archive

python Archive

今日のPythonメモ

1.多次元配列の初期化


hoge = [[0 for j in range(10)] for i in range(5)]

hoge[4][9] = 1

2.intersect


a = [1, 2, 3, 4, 5]
b = [2, 6, 4, 8]

c = list(set(a) & set(b))

以上

google appengineではまったこと3 ~データストアとかモデルとか

夏休んでました。

google appengineはかゆいところに手が届かないなあと感じている今日この頃。例えばDBへのクエリで2つ以上のプロパティに不等号を使えない。


query = Hoge.gql("WHERE foo >= :a AND bar >= :b", a = 1, b = 1)

上はエラーが出る。インデックスが使えなくなるからだと。

あと、ModelにGeoPtPropertyってのがあるわけだけども、ソーティングが(つまり比較が)緯度→経度の順で行われるから矩形領域を検索したりできない。


locA = db.GeoPt(0, 0)
locB = db.GeoPt(10, 10)
query = Hoge.gql("WHERE geo >= :a AND geo <= :b", a = locA, b = locB)

ってやっても緯度が0以上10以下なら検索されちゃう。例えば(5, 150)とか。こういうことをしたいときにどうしたらいいのか、現在検討中。どうしたものか。緯度と経度に分けてプロパティ作っても、最初に書いたように2つ以上のプロパティで不等号使えないし。全部取ってきてから自前フィルタで処理するとかしたら、時間かかってタイムアウト制限に引っかかる気がするし。求む!解決策。

以上

pythonのclassmethodとstaticmethodの違いが分からん

分からん。


class Hoge:
   def foo(cls):
      print "foo"

   def bar():
      print "bar"

   foo = classmethod(foo)
   bar = staticmethod(bar)

クラスメソッドは第一引数にクラス名、スタティックメソッドはなにもこない、って違いがあるらしいが、だからなんなの?
この辺見てるとstaticmethodなんていらねえぜって書いてあるように見えるんだけど、いらねえのかな。

今度考える。

以上

google appengineではまったこと2 ~全文検索

google appengineには全文検索がないらしい。
「googleなのに!そんな馬鹿な!自分で作るしかないのか!!」
と思ったんだけど、そんなのすでに作ってる人がいるんじゃないかと思い立ち、探してみたら・・・なんと隠し機能ですでに存在しているご様子!ドキュメント化されてないけど!
以下参考リンク
How-to: Full-text search in Google App Engine

というわけで、使い方としてはdb.Modelの代わりにsearch.SearchableModelを使って、検索対象はStringPropertyあるいはTextPropertyにしといたらいいと。検索するときはArticle.all().search(“検索単語”)とすると。db.Modelから切り替えるのはすごい簡単なので、ちょこっとやってみたら確かに検索できた。・・・英語は。英単語のみならば。おそらくスペース区切りでインデックス化してる。前方・部分文字列での検索は不可(リンク先には語幹でも無理と書いてある)。そういうわけで当然、日本語も不可、無理だった。いや、がんばればできるのかもしれないけど。フレーズ検索はできないらしいけど、普通にand検索くらいはできるっぽい。
例えばレコードに
“hoge foo bar”
って入ってるとき。


from google.appengine.ext import db
from google.appengine.ext import search

class Hoge(search.SearchableModel):
   content = db.TextProperty()

def Main(webapp.RequestHandler):
   def get(self):
      hoges_query = Hoge.all().search("hoge bar")
      hoges = hoges_query.fetch(10)

ってやればちゃんと”hoge foo bar”を検索してきてくれる。そういうわけでまあ、使える場面もあるんじゃないでしょうか。
でも日本語で使うためにはやっぱ自分で作るしかないのか・・・!!

追記:
と思ったら作ってる人いた。
http://d.hatena.ne.jp/matsuza/20080419/1208625514
でも形態素か~、Yahooか~。N-gramどっかにないかな。

以上

Home > python Archive

Search
Feeds
Meta
 合計:023358
 今日:0098 昨日:0127

Return to page top