Pythonで書いたスクリプトでGoogleAppEngineのデータストアからデータを取得する際、filterで指定する単語は完全一致しか対象にならず、前方一致検索や後方一致検索、部分一致検索を行うことができません。
GAE上のPythonで擬似的に前方一致検索や後方一致検索、部分一致検索を実現する方法は以下から。
GAEで前方・後方・部分一致検索する方法
データストアからデータを取得した後、Pythonのプログラム上で処理を行います。
データストアに『Hoge』という種別(kind)があり、構成が下記の様になっているとします。
class Hoge(db.Model): id = db.StringProperty() name= db.StringProperty()
今回は正規表現が行える『reモジュール』を使用し、nameプロパティを対象に部分一致検索を行なってみます。
from google.appengine.ext import webapp, db import re class Hoge(db.Model): id = db.StringProperty() name= db.StringProperty() class hogePage(webapp.RequestHandler): #Hogeから全件取得 TmpHogeData = Hoge.all() #検索語句のセット keywords = 'moge' #部分一致検索後のデータをセットするリストデータ HogeData = [] #for文で回して1件ずつチェック for tmp_hoge_data in TmpHogeData: if re.search(keywords, tmp_hoge_data.name): #set_hoge_dataは再セット用の辞書データ set_hoge_data = { 'id': tmp_hoge_data.id, 'name': tmp_hoge_data.name } HogeData.append(set_hoge_data) #部分一致検索に合致したデータを出力 for hoge_data in HogeData: print hoge_data['name']
これで『HogeData』の中にnameプロパティの部分一致検索にヒットしたデータが格納されます。
コメント