PythonからTokyo Cabinetを操作して全文検索を実装する-まずは環境構築

2012-04-26
このエントリーをはてなブックマークに追加

途中まで書いて長くなりそうだったので、環境構築とコーディングの2部構成にします。まずは環境構築です。

全文検索っていっても名寄せとかしてないからただ単にSQLでいうところのLike検索とおんなじなんですけど、RDBじゃなくてKVS使うところがポイントです。

「なんでMySQLとかのRDBじゃなくてKVS?」っていうところは長くなるので割愛します。まぁcount()が遅かった、っていうだけなんですけどね。アレはチューニングでどにかなるのかなぁ。

TokyoCabinetのインストール

wget http://fallabs.com/tokyocabinet/tokyocabinet-1.4.47.tar.gz
tar zxfv tokyocabinet-1.4.47.tar.gz
cd tokyocabinet-1.4.47
./configure
make
make install

これだけ。

インストールにはいろいろ諸々必要なのですが、ハセテツの環境だとbzip2-develだけいれれば大丈夫でした。まぁ足りなければ./configureで教えてくれるでしょう。

Tokyo Tyrantは今回はインストールしません。Pythonから直接Tokyo Cabinetを叩きます。

次はPythonからTokyo Cabinetを叩くためにpython-tokyocabinetをインストールします。

pip install tokyocabinet

/etc/ld.so.conf に
/usr/local/lib
を追記して
/sbin/ldconfig

これまた簡単。’12.4月時点でバージョン0.5がインストールされます。

 #! /usr/bin/python
# -*- coding: utf-8 -*-

from tokyocabinet import btree

tc = btree.BTree()
tc.open(‘test.tcb’, btree.BDBOWRITER | btree.BDBOCREAT)

tc[‘key’] = ‘Hello TokyoCabinet’

print tc[‘key’]

tc.close()

上記サンプルが実行できて、「Hello TokyoCabinet」と表示されれば成功です。

CentOS6.2にredisをインストールする

2012-04-18
このエントリーをはてなブックマークに追加


InstagramPinterestでも利用されているredisをCentOSにインストールしてみました。

現時点での最新版(2.4.10)をダウンロードして解凍、コンパイルしてインストールします。

wget http://redis.googlecode.com/files/redis-2.4.10.tar.gz
tar zxfv redis-2.4.10.tar.gz
cd redis-2.4.10
make
make install

で、セットアップ。起動スクリプトまで用意してくれます。
セットアップ中にいろいろ聞かれますが、デフォルトのままでいいと思います。

cd utils/
./install_server.sh

起動スクリプトはoffになっているはずなので、onにします。

chkconfig –list redis_6379
chkconfig redis_6379 on

で、起動しましょう。

/etc/rc.d/init.d/redis_6379 start

起動したらクライアントツールを立ちあげて、

redis-cli

redis 127.0.0.1:6379> set hoge hogehoge
OK
redis 127.0.0.1:6379> get hoge
“hogehoge”

こんな感じです。

んー、さて、何に使おう。

Pythonで集合の積を求める

2012-04-16
このエントリーをはてなブックマークに追加

Pythonで集合の積を求める方法です。

_f0 = set([u’読書’,u’インターネット’,u’アニメ’])
_f1 = set([u’音楽’,u’映画’,u’アニメ’])
_a = _f0 & _f1

出力されるのは「アニメ」です。共通項ですね。

AさんとBさんの趣味を列挙して、「これとこれが一緒だから相性は云々」なんていう下世話なことが可能かもですよ。

Python2.7で使いましたが、2.5とかでもたぶん動く、と思います。

Tags:

virtualenvを使ってpyramidの開発環境を作る

2012-04-11
このエントリーをはてなブックマークに追加

ずっとDjango使ってきたんですけど、Djangoだけじゃなくて他のフレームワークも使ってみようということで。そもそもフルスタックって便利なんですけど、もれなく使わない機能も付いてきちゃいますからね。そこがちょっと気にはなっていたんです。

まずは仮想環境の構築と、Pyramidのインストール。単純に「pip install pyramid」にしちゃうと1.3がインストールされます。今はまだ1.2の最新版を使ってみます。

virtualenv -p /usr/local/bin/python2.7 –no-site-packages sample
cd sample/
bin/easy_install pip
bin/pip install pyramid==1.2.7

で、ちらっとテンプレートをみてみます。

bin/paster create –list-templates

basic_package: A basic setuptools-enabled package
paste_deploy: A web application deployed through paste.deploy
pyramid_alchemy: pyramid SQLAlchemy project using traversal
pyramid_routesalchemy: pyramid SQLAlchemy project using url dispatch (no traversal)
pyramid_starter: pyramid starter project
pyramid_zodb: pyramid ZODB starter project

pyramid_starterを使ってプロジェクトを作ってみました。

bin/paster create -t pyramid_starter webapp

最後に必要なモジュール類をインストールしてアプリケーション起動。

cd webapp/
./../bin/pip install -e .
python setup.py develop
./../bin/paster serve development.ini

serving on 0.0.0.0:6543 view at http://127.0.0.1:6543

「どのフレームワークがより優れているか」っていう結論を出すつもりはなくて、いろいろ知っておけば選択肢が広がって、ケースバイケースで使い分けられるだろうと。

日々勉強ですわ。