月別アーカイブ: 2016年2月

検索エンジン自作入門/ wiserのPython移植(6)

久しぶりの更新になってしまいました。

今回は merge_inverted_index と update_postings のはずだったのですが、update_postings でデータベースにポスティングリストを保存したり取り出したりするときにエンコード処理が必要になるので、それを先に作ることにします。これは書籍でいうと第5章「転置インデックスを圧縮しよう」にありまして、今回は圧縮なしで取得・保存する処理だけ作ります。ページはP109からP113になります。

まずはエンコード処理。引数は、ポスティングリストと圧縮するかしないかの指定です。

pickleモジュールを用いてシリアライズを行います。

Python2.7の場合、シリアライズを行う pickle.dumps メソッドの第2引数で protocol=2 を指定する必要があるようです。

続いてデコード処理。

やってることは単純です。

後で圧縮を行うときは、encode_postings_golomb などに圧縮処理を実装することになります。