[Python] GAEで前方一致検索や後方一致検索、部分一致検索を実現する方法

自由が丘で働くWeb屋のブログ

[Python] GAEで前方一致検索や後方一致検索、部分一致検索を実現する方法

[Python] GAEで前方一致検索や後方一致検索、部分一致検索を実現する方法

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プロパティの部分一致検索にヒットしたデータが格納されます。

 
カテゴリー:Webシステム開発
タグ:,
2013年3月31日 06時08分
 

関連記事

 

コメントを書く

(C) 自由が丘で働くWeb屋のブログ