Google App Engineで全文検索
実はGoogle App Engine(以下GAE)で全文検索を行おうと思っても
現状APIは提供されていません。
まさかGoogleのアプリで検索ができないなんて
考えてもいなかったのでかなり驚きました。
といいつつもある程度対応は可能です。
・前方一致検索
以下のように範囲検索を利用してユニコードを
擬似的に前方一致検索することができます。
db.GqlQuery('SELECT * FROM Test WHERE w >= :1 and w < :2', word, word + u'\uFFFD')
・全文検索(非公開。英語のみ)
非公開ではありますが、全文検索を行うSearchableModelという
クラスが提供されています。
使用方法はモデルが継承するdb.Modelをsearch.SearchableModel
に変更し、検索時に
Test.all().search(search_word)
と指定することで全文検索が可能です。
ただしインデックス化がスペース区切りになるらしく
日本語はうまく検索できません。
(いずれ対応されるかも)
今回使おうと思っていた目的が前方一致だったので
事なきを得ましたが、部分一致検索ができないのは
結構つらい。