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

前回実装した text_to_postings_list 内で呼んでいる、token_to_postings_list を実装します。書籍のページは75ページです。この関数は、一つのトークンを受け取ってテンポラリ転置インデックスに登録します。

引数は、

  • document_id : 文書ID
  • token : トークン
  • position : トークン出現位置
  • ii_buffer : テンポラリ転置インデックス

となっています。

オリジナルはマクロでトークンに紐づいたポスティングリストを探しますが、Python版では関数 find_token_from_index により検索します(7行目、コード略)。

その後は、紐づいたポスティングリストの有無によりパラメータをインクリメントしたり、新しくインデックスやポスティングリストのエントリを生成したりします。エントリの生成はC版で専用に関数を作ってますが、Python版ではインスタンスの生成で行うことになります。

ところで、Pythonのユニットテスト界隈はどうなっとるんじゃと調べてみたのですが、unittestから始めてみるのが無難みたいですね。こうやってコードを掲載していってますが、ngram_next 以外はテスト結果を載せてませんね。今日の token_to_postings_list もお手製のテストは通過してますが、そろそろ unittest を使ってみようかと思ってます。

次回は、text_to_postings_list から呼び出される merge_inverted_index です。メモリ上の二つの転置インデックスをマージします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です