Google App Engine python で、N-GRAMを使用し、日本語全文検索を作ってみた。

『Google App Engine とは』

 Googleが提供するクラウドサーバー環境でアプリケーション開発が無料で出来るというサービスです。

 上記のリンクの内容を読んで登録すれば、簡単なサイトならすぐに作れるでしょう。

 セットアップについては、「Google App Engine を使って無料でサイトを立ち上げる方法」 をご覧下さい。詳しく掲載されています。
 私はこのサイトを見て、セットアップさせて頂きました。


初めてのGAE(Google App Engine)と、初めての python でしたから、苦労しました。もう、ネットを調べまわりました(笑)
で、調べていくうちに、なんと、N-Gram を使った日本語の全文検索がないらしい(あるのかも知れませんが、見つかりませんでした)
という事に気がつき、それじゃ作ってしまおうと思い立ったわけです。

勉強していくと判るのですが、GAEのデータベースに変わる、python向けのデータストア(datastore)APIが用意されていて、
それをアクセスするのに使われるSQLもどきの、GQLというツールには、制限が多いんです。
SQLでいうところの、LIKE は使えませんし、条件の OR もありません(ANDだけです)

作っていくのに、はまった箇所はいくつもありました。大体 python 自体も知らないのですから、無謀です。
コンピュータは紙カードでデータを処理する頃からですから、かなり昔からやっています。
汎用機から、パソコンへ開発も移り、アッセンブラ、PL/I、COBOL等 から、VBや、.NET と進んで来ましたが、
もう最近は付いていけなくなっています。
それなのに、python(パイソン)です。もう笑うしかない。

作成中によく嵌ったのは、日本語の処理でしたが、未だによく理解出来ていません。
  作成するファイルの頭の部分には、
#! -*- coding:utf-8 -*- を入れておく必要があるとか
  作成したファイルは、
UTF-8 で保存しないと文字化けするとか、
  文字型の場合は、
.encode('utf_8') を付けるとか
 テンプレートを使えば、日本語は大丈夫らしいとか、散々でした。

python でさえも、文字列の部分参照はどうやるんだろうとか、日付はどうやって取得するのか、もう知っている方にとっては
当たり前の事でしょうが、素人ですから仕方ありません。
で、pythonの言語解説を書くつもりも、Google App Engine の解説もするつもりもありませんし、素人に書けるわけも
ありませんので、ひとまず、私が作ったソースを公開して、反応が見たいなぁと思った次第です。

実際には、1本のプログラムになるのですが、別々に作成したせいもありますし、分かれていた方が、
理解しやすいと思い、このまま公開します。

ただなにぶんにも、素人が作成しておりますので、無駄なロジックや考え方の違いもあるかも知れませんが、
そこはひとつ、大きい目で見てやってください。


日本語全文検索を 実施して見る 今回説明してある内容とは少し違っていますが、
「日本語全文検索の画面」を Google App Engine にアップしてあります。
試しに利用してみて下さい。削除は自動で行われますが登録・検索のテストは出来るはずです。

日本語全文検索をする為の考え方
検索するデータの登録 (N−GRAMの考えを使ってデータストアへ登録するプログラム)
日本語での全文検索  (実際の検索プログラム)
今回の日本語全文検索の問題点と改造方向