それでも気分は高専生

元高専生が自分のやってきたことを記事として残すためのてきとーなブログ

SolrでConflの記事を検索

社会人になり、初めての投稿です。

入社した会社では検索エンジンを運用する部署に配属され、検索への理解を深めるためにApache Solrで簡単なアプリケーションを作ってみよう!

ということになり、今回はそこで得られた知見を書いていければなと思っています。

github.com

何を作ったの?

今回はConfluence(以下、Confl)と呼ばれるCMS上の記事をSolrから検索できるシステムを作りました。

検索アイデア

こうしたら検索結果がよくなるのではないだろうかというアイデアを検索クエリに落とし込みました。

インデクシングCLI

Solrは転置インデックスと呼ばれる形式で単語とドキュメントの紐付けを行うことで、高速な検索を実現しています、そのため直接Conflから検索することはできません。

そこでConflのAPIを叩き、必要な加工を施した上で転置インデックスに登録する「インデクシング」という作業を行ってくれるCLIツールを開発しました。

Solrの環境構築

Solrの動作環境をdocker-composeで構築し、スキーマを設定することでインデクシングおよび検索が行えるようにしました。

検索フロントエンド

SolrへはAdminの管理ページ/HTTP通信によるAPIの2通りのアクセス方法があります。

しかしどちらも視認性が高いものではなく、UXは非常に低いものとなっております。

そのためWebでフロントエンドを用意し、検索システムのフロントには何が必要なのか?それを作ってみようと考えました。

使用技術

  • Apache Solr: 今回の主役、検索エンジンであるApache Luceneを含む検索システムのスイート
  • Confl : 今回のサンドバッグ、様々なあいちぃー企業で使われているCMS
  • docker-compose: Apache Solrを手軽に動かすための仮想環境
  • Go: 簡単に使えるお手軽言語、Confl APIから取得した記事データを変換してSolrへインデクシングするためのCLIツール開発に使用
  • React.js + TypeScript: フロントエンドの開発に利用、書き方が好き

開発の痕跡

全部書くと長くなるので、分割して書いていこうと思います。

ちなみにですが、成果物のソースコードはこちらにあげております。

github.com