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)


と指定することで全文検索が可能です。


ただしインデックス化がスペース区切りになるらしく
日本語はうまく検索できません。
(いずれ対応されるかも)


今回使おうと思っていた目的が前方一致だったので
事なきを得ましたが、部分一致検索ができないのは
結構つらい。


早く、日本語も全文検索可能なAPIを公開してほしいものです。