検索について調査・学習したメモ
Lastmod: 2025-01-01

最初の要求

  • 仕事で転置インデックスを使った検索をメンテ・実装したい
  • 転置インデックスが裏にあるDBの仕組みがしりたい
  • パフォーマンスやセキュリティなど、運用にあたり必要なことをしりたい。

path finder

木構造で起こすとこんな感じ。最初に会社のドキュメントから、参考図書を選んだ。最初にApatch Lucene 入門を読んでから、次に検索システムの方を読んだ。

1. 「Apache Lucene 入門」

感想

  • コンセプトとキーワードを拾うことができた。
    • Analyzer, Token, Term, Index, Document, Field
    • IndexSearcher インスタンスが MVCC を提供してくれている?
  • Java で提供されているインターフェースとその使い方の説明が多かった。
    • 転置インデックスの実装がいかなるものかという疑問には答えてくれなかった。
    • パフォーマンスやセキュリティ面では軽く触られているが、本当に軽い。
    • インターフェースから推し量ることも多いが…
  • 説明されているLuceneのバージョンが古い。v1系。2024年12月現在 10.1.0 がリリース済み
    • 本書で言及されていたIndexWriterの使いにくいインターフェース(createかappendしかなく、create_or_appendがない)には改善が入っていた。
    • 平成18年出版なので、仕方ない。

わからなかったこと、さらに知りたいと考えたこと

  • アルゴリズムとデータ構造
  • Elasticsearch(Opensearch) が Lucene をいかにつかっているのか。例えば Opensearch はデータを投入するとすぐに検索結果にヒットする。しかし Lucene では毎度インデックスを作り直して、IndexSearcher を作り直さないといけなかった。どうやって実現するのだろう。
  • 現在の Lucene はどのようなものか?v1からどんな変更があったのだろう
  • Lucene を動かしてみたい

2. 「検索システム ― 実務者のための開発改善ガイドブック」

転置インデックスのアルゴリズムとデータ構造について言及があると、path finder で把握していたので、この本を選んだ。

感想

  • ちょっと読みやすい学術書くらいの触りやすさと中身の濃さがあった。かなりいい。
  • Lucene という specific なソフトウェアに興味がないのであれば、この本を最初に読むと俯瞰できてよさそう。
  • 教養本。