Amazon Kendraでクエリ言語で検索結果を絞り込めるようになりました

2022.01.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

Amazon Kendraで検索時にクエリ言語を使って検索結果を絞り込むことが出来るようになりました。

今回は、Kendra入門を兼ねて演算子やフィールド指定を使った絞り込みを行ってみます。

サンプルデータ

今回のサンプルデータはこちらのものを利用させて頂きました。

しかし、Kendraはデフォルトでサンプルデータソースが用意されており、そちらからインデックスの作成が出来るので試すだけであればわざわざ外部から調達しなくても良いです。

こちらはインデックス作成直後のサーチコンソール画面です。
サンプルデータソースのHTMLとPDFをアップロードしたS3バケットからインデックスをオンデマンド構築しました。
インデックス構築までがなかなか時間がかかりました。

演算子の指定

ANDORNOTを使うことでキーワードの条件を細かく指定することが出来ます。
また、適用順序をコントロールするために括弧も併用可能です。

ちょっとわかりにくいのですが、以下では同じ単語で複数の演算子を組み合わせて検索しています。

AND

OR

NOT

フィールド指定

フィールドを指定した絞り込みが可能です。
今回のサンプルデータではSource URIしか良さそうなフィールドがなかったのですが、コンテンツの更新日を直近1年に絞ったり、あるいはカスタムフィールドを指定したりなど様々な使い方で可能です。

フィールドの指定となると、Kendraのインデックスデータの構成を知る必要があるので、実際はAPIのパラメータのように追加の条件としてフィールドによる絞り込みを行う必要がありそうです。

ワイルドカード

こちらは意図せずユーザーがすでに利用している可能性がありますがワイルドカードを指定しています。
サンプルではCLoudWatchとCloudTrailが結果のキーワードとして強調されているのがわかりますね。

さいごに

本日はAmazon Kendraでクエリ言語を使った絞り込みを行ってみました。

利用可能なクエリ構文一覧は以下をご参照ください。

Kendra自体が東京リージョンではまだ利用出来ませんが、結構な頻度でアップデートされているサービスであることと、東京リージョンはまだですがインデックス作成や検索時に日本語自体は対応しているので、アプリケーションへの組み込みを試してみてください。