コンテンツにスキップ

PloneとLanceDBを組み合わせるとできること:OSC東京で開発版を初披露します

Ploneの検索にLanceDBを組み合わせるアドオンを開発しています。文章の言葉が一致する検索に加え、意味の近い文章や、検索語に合う画像を探せるようにする取り組みです。10月17日(土)のオープンソースカンファレンス2026 Tokyo/Fallでは、Plone Users Group Japanのブースで開発版を初めて紹介する予定です。

Ploneのコンテンツに、新しい探し方を加える

以前、Ploneサイトの実データでベクトル検索を比較しました。今回は、その実験をPloneで使える検索機能へ進めています。使っているLanceDBは、文章や画像の特徴を表すベクトルと、絞り込みに使う情報を一緒に扱えるデータベースです。LanceDBそのものの詳しい紹介は、別の記事で行います。

開発中のアドオンでは、Ploneのコンテンツを元にLanceDBへ検索用の情報を登録します。サイト管理者は機能を選んで有効にでき、Ploneの検索画面を使ったまま新しい探し方を試せます。検索結果は、現在の利用者が閲覧できるコンテンツかどうかをPlone側で最終確認してから表示します。

言葉の一致と、意味の近さで文章を探す

キーワード検索では、タイトル・説明・本文を対象に、語の一部が含まれるコンテンツも探します。たとえば「会議」から「定例会議」を見つけられます。日本語の語を自動で区切る方式ではなく、文字の並びを使った検索です。

ベクトル検索を有効にすると、言葉が一致しなくても意味の近いコンテンツを探せます。キーワードとベクトルの結果を合わせる「ハイブリッド検索」も選べます。開発版の検索画面では、ハイブリッド、キーワードのみ、ベクトルのみを切り替えられます。「山登り」と「登山」のように、表現が違う情報を探す場面で役立ちます。

一方、検索語に書いた -語 の除外や OR は、ハイブリッド検索ではキーワード側にだけ適用されます。条件どおりに語を含む・含まないで探したいときは、キーワードのみを選ぶ設計です。機能ごとの違いも、画面で分かるようにしています。

文章で画像を探し、似た画像を整理する

画像検索を有効にしたサイトでは、「画像も含めて探す」画面から、文章を手がかりに画像を探せます。画像のファイル名やタイトルに検索語がなくても、写っている内容との近さから候補を見つけます。文章と画像をまとめて探す方法と、画像だけを一覧にする方法があります。

編集者がPloneのTinyMCEで画像やリンクを挿入するときにも、管理者が有効にすればこの検索を使えます。サイト管理者向けには、1枚の画像やアップロードした画像を手がかりに似た画像を探し、重複した画像の整理に役立てる画面も用意しています。比較のためにアップロードした画像は保存しません。

タグ付けも編集作業を助ける

自動タグ付けを有効にすると、文章や画像の内容と、サイトで登録したタグの語との近さから候補を判定します。編集者向けの「タグのお勧め」画面では、今のタグを残すか外すかを確認し、候補や似たコンテンツのタグを選べます。自動判定の結果をそのまま任せきりにせず、編集者が見直せる形です。

ほかにも、検索結果へ本文からリンクしているページを示す機能や、サイト内の語から「もしかして」の候補を返すJSON APIがあります。後者は、現時点では検索画面には表示しません。

これらは管理者が選んで有効にする機能です。コンテンツの更新を検索へ反映する処理は後から行うため、保存直後に検索結果へ現れるまでには少し時間がかかります。LanceDBで検索できないとき、文章検索はPloneの検索で答えます。画像検索では、検索できない状態を利用者に示します。

10月17日、OSC東京のPloneブースで紹介します

OSC2026 Tokyo/Fallは10月17日(土)10:00〜16:00、東京都立産業貿易センター台東館6階で開催されます。Plone Users Group Japanの展示ブースで、PloneとLanceDBを組み合わせた検索の開発版を紹介したいと思います。どんな検索が役立つか、会場で意見を聞けるのも楽しみです。

このアドオンは、現時点では開発中で、まだOSSとして公開していません。将来的には公開を目指しています。今回の展示を、実際に検索を使う人やPloneに関わる人と、使い方や改善点を話す機会にしたいと考えています。

開発中には、Lanceのインデックス更新処理のバグを見つけて修正した話もありました。検索の種類を増やすだけでなく、更新後の絞り込みや権限を含めて正しく動くことを確認しながら、Ploneで使いやすい検索に育てていきます。