ユーザーをより速く検索できるようにする必要があります。memcacheを使用しない検索には8秒かかります。現在、私のコードはNot Dot Netの助けを借りてmemcacheを利用しており、検索時間を4秒に短縮しています。今の私の質問は、どうすればそれを速くすることができるかということです。
qUserSearch = Utilities.deserialize_entities(memcache.get("qUserSearch"))
if not qUserSearch:
qUserSearch = db.GqlQuery("SELECT * FROM User ORDER BY created DESC").fetch(100000)
memcache.add("qUserSearch", Utilities.serialize_entities(qUserSearch))
searchLength = len(searchData)
hits = []
gotHits = False
for u in qUserSearch:
searchEmail = u.email[0:searchLength]
if searchEmail == searchData:
hits.append( u.key() )
else:
# Since I only search for the first x chars
# will there never be hits after it's had hits
if gotHits:
break
return hits
私の最初のアイデア:
- ndbに変換し、SELECTのみ、必要なデータFROMユーザー
- SQLの方法では、データの少ないテーブルを作成します。ユーザー名とメタデータへのキーのみ
- 新しい全文検索
- サードパーティの開発者による古い検索可能なモデル
- Memcacheに必要なのは、すべてではなく、プロパティとトラベレーゼだけです。
それとも他のアイデアがありますか?私が最も時間を節約できると思うのはどれですか?