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プロパティの部分一致検索にヒットしたデータが格納されます。
![[Python] GAEで前方一致検索や後方一致検索、部分一致検索を実現する方法](http://blog.diginnovation.com/wp-content/uploads/2013/03/python_gae_datastore_search.jpg)


コメント