主にプログラミングに関して。Python, .NET Framework(C#), JavaScript, その他いくらか。
記事にあるサンプルやコードは要検証。使用に際しては責任を負いかねます

スポンサーサイト

                
tags:
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

GoogleAppEngineで作ったアプリのデータストアに検索を実装する

                
tags:
 昨日、WebアプリをGoogleAppEngineに立ち上げて、検索を使えない不便さに気づいたので即興でタイトルや著者名での検索を実装した。

http://cradleph.appspot.com/

 GoogleAppEngineでNoSQLのデータベースとして用意されている『データストア』。ある文字列を格納しカラムの値で絞り込みをかけるクエリを発行したい場合、likeが使えないのでカラムの値を完全一致させなければならない。カミュという作家の著書を検索したくて『カミュ』をキーワードにクエリを発行した場合、著者名が『アルベール・カミュ』になっていたら検索に引っかからないということだ。これは結構不便。

 データストアでそれをやってくれないなら、Pythonでやればいい(僕はGAEをpythonで使っている)。本やDVDのタイトルを検索したければ、タイトルリストを作っておいて、re.search()でも使って検索ワードに掛かるタイトルをまとめてやればいい。そしたらそれをクライアントに返すなりなんなり。さいわいなことに、データストアにはリストオブジェクトを保存できる。というわけで以下のようにリストを作る。


import re

keyword = "mann"
reg = re.compile(keyword, re.I) ##re.I -- ignore letter case
li_title = ["Albert Camus", "Hermann Hesse", "Dostoevsky", "Geothe"]
li_hit = [title for title in li_title
if reg.search(title)]
##dic_hit = {x: title for x, title in enumerate(li_title)
## if reg.search(title)} ##Python2.7


 あとはJSONを使うなりしてこれを煮るなり焼くなり。

 これとは別に形態要素解析とListPropertyを使っても割と簡単にできるかなぁ。データストアがちょっと不便かと思っていたけど、うまくListPropertyを使えば解消できるというか、そもそも不便じゃなかった気がしてくる。
            

コメントの投稿

非公開コメント

プロフィール

hMatoba

Author:hMatoba
Github

最新記事
リンク
作ったものなど
月別アーカイブ
カテゴリ
タグリスト

検索フォーム
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。