google appengineには全文検索がないらしい。
「googleなのに!そんな馬鹿な!自分で作るしかないのか!!」
と思ったんだけど、そんなのすでに作ってる人がいるんじゃないかと思い立ち、探してみたら・・・なんと隠し機能ですでに存在しているご様子!ドキュメント化されてないけど!
以下参考リンク
How-to: Full-text search in Google App Engine
というわけで、使い方としてはdb.Modelの代わりにsearch.SearchableModelを使って、検索対象はStringPropertyあるいはTextPropertyにしといたらいいと。検索するときはArticle.all().search(“検索単語”)とすると。db.Modelから切り替えるのはすごい簡単なので、ちょこっとやってみたら確かに検索できた。・・・英語は。英単語のみならば。おそらくスペース区切りでインデックス化してる。前方・部分文字列での検索は不可(リンク先には語幹でも無理と書いてある)。そういうわけで当然、日本語も不可、無理だった。いや、がんばればできるのかもしれないけど。フレーズ検索はできないらしいけど、普通にand検索くらいはできるっぽい。
例えばレコードに
“hoge foo bar”
って入ってるとき。
from google.appengine.ext import db
from google.appengine.ext import search
class Hoge(search.SearchableModel):
content = db.TextProperty()
def Main(webapp.RequestHandler):
def get(self):
hoges_query = Hoge.all().search("hoge bar")
hoges = hoges_query.fetch(10)
ってやればちゃんと”hoge foo bar”を検索してきてくれる。そういうわけでまあ、使える場面もあるんじゃないでしょうか。
でも日本語で使うためにはやっぱ自分で作るしかないのか・・・!!
追記:
と思ったら作ってる人いた。
http://d.hatena.ne.jp/matsuza/20080419/1208625514
でも形態素か~、Yahooか~。N-gramどっかにないかな。
以上
ピンバック: 研究開発