シリーズ最終回の今回はDjangoで全文検索をするときに役に立つかもしれないTipsです。
全文検索サイトに直接関係するわけではないですが、、、
全文検索サイト(3) MySQL+Djangoのあれこれ
全文検索サイト(2) 形態素解析をする – MeCab
前回の続きで、N-gramの代わりに形態素解析を行って登録する方法について書いてみます。
記憶が正しければ、Namazuなどはこの方式のようです。
さて、今回はMeCabを使ってみます。
このあたりから頂いてくればよいでしょう。
全文検索サイト(1) 全文検索エンジン – MySQLを使う
サイトを作っていると全文検索機能を持たせたくなります。
というわけで、MySQLを使って全文検索機能を持つサイトを作ることを考えてみます。
今回はMySQLでの全文検索機能について書きます。
MySQLの全文検索機能は、英語のように単語を空白などで区切られていることを前提としています。
英文であれば、検索対象のカラムに対して、フルテキストインデックスを張ったうえで、
select *
from table_name
where match (column_name)
against(‘word1 word2 word3′)
のように書くと、なかなかの検索結果が表示されます。
Accessからお名前.com VPS + MySQLへのマイグレーション
果たしてこんなことを書いて読む人がいるのかどうかは分かりませんが、ちょっとメモ程度に書いておきます。
AccessからWebアプリに切り替えたいと思っているけど、そんなに予算がない人向けです。
まず、Accessのデータをきれいにしましょう。
Accessでアプリケーションを作っている人はたいてい、テーブル名は日本語だし、データはテキスト型と、かなりいい加減に作っているものです。
これをきれいにしてあげないとWebアプリケーションにはなりませんので、がんばりましょう。
それから、数値や通貨と言えるデータは型を変えておきます。
テキストフィールドの長さも適切なものに設定しましょう。特に分類コードが2桁なのに255文字とっているとか、ありがちな罠につい引き込まれたりしないようにしましょう。
そのほか、やるべきことはありすぎるので、改めてマイグレーションについて書いてみようかと思います。
お名前.com VPS+PythonでMySQLを使ってみる。
今日は前回の続きでMySQLを使ってみます。
MySQLは、VPSで使うにはよいデータベースです。
トランザクション処理がいらないなら、軽量で動作が軽いMyISAMを使うのがよいでしょう。
メモリもあまり必要としませんし、全文検索インデックスを持つこともできるのも簡単なWebサイト利用にはもってこいです。
というわけで、もっとも使われているMySQL-Pythonを導入します。
お名前.com VPS でDjangoを使う
お名前.com VPS(*1) に引っ越ししました。
で、いきなりですが、Django(*2)を動かしてみました。
せっかく時間をかけたので、情報公開します。
お名前.com のVPSのページは下記のとおりです。
http://www.onamae.com/server/vps/
一通りそろっているので、始めてみるには敷居が低いのですが、いざ、いろいろやろうとすると、ちょっと面倒かもしれません。
というわけで、インストール手順を書きます。
やってみる場合は自己責任でお願いしますね。
Closure
今日、機会があってClosureの説明をしました。
Closure = 簡単にちょっとした関数が書ける仕組み
のような誤解(?)があるようなので、ちょっとしたサンプルを書いてみました。
def pipe():
p = list()
return (lambda x: p.append(x),
lambda: p.pop(0),
lambda: 0 < len(p))
write, read, hasNext = pipe()
write('A')
write('B')
write('C')
while hasNext():
print read()
言いたいことは、Closureも見る角度は変わっているにせよ、考え方はオブジェクト志向だっていうことです。
Pythonの記述力
ネットサーフィンをしていたら、TopCoderなるサイトがあることを知りました。
なんでも、毎回、お題を出されて制限時間内に解くというものらしいです。
お題自体はなんの役に立つのかわからんのですが、やればそこそこの技術はつくんじゃないかと思います。
このサイトではJavaとかCとかC++とか、Pythonほどお手軽じゃない言語で問題を解かないといけないので、いささか面倒なのですが、問題自体がPythonのお手軽さを表現するのにちょうどよいので、サンプル問題としていただいてまいりました。
続きを読む
Op. 9-2
しつこいようですが、久々にアップです。
前よりは良くなった気がしますよ。
リズムが悪いとか、
素早い動きが正確さに欠けるとか、
和音がそろっていないとか、
ppのバスが聞こえないとか、
そもそも、バスの線が線になっていないとか、
まだまだなところは挙げればきりがないのですが、、、だいぶましになったと思います。
[video]http://www.inventio.jp/blog/wp-content/uploads/2009/07/op9-2.mp3[/video]
Reader/Writer Lock
前回、だいぶん偉そうなことを書いた割には、実はたいしたことなかったりするhanezoです。
最近、また怪しいものを作ろうかなと思っていまして、たまたま仕事で使ったPythonのプログラムを書いたりしています。
まあ、どこでもありそうなコードで、OSの授業で出てきそうなReader/Writer Lockクラスを書いてみました。
共有リソースに対して、複数の読む人/唯一の書く人のいずれかを許すオブジェクトです。