Suggesterの使い方

サジェスチョンとは、検索エンジンや自然言語処理(NLP)システムにおける機能で、ユーザーが入力しようとしたクエリーや単語に対して、過去に検索された用語やよく使われる用語を基に、候補を提示するものです。Suggesterの目的は、入力ミスを減らし、関連情報を見つけるプロセスを高速化することで、ユーザーの検索エクスペリエンスを向上させることです。Suggesterは通常、ユーザーがこれまでに入力した文字を検索用語のデータベース内の用語と照合し、ユーザーの入力に最も一致する候補のリストを提示することで機能します。これらの提案は、前方一致、ファジーマッチング、またはN-gramマッチングなどのさまざまなアルゴリズムに基づくことができます。 この記事では、私たちがおすすめするContent Repository 7のSuggesterの使い方をご紹介します。
はじめに…Content Repository 7とは?
Content Repository 7とはMintJamsのコンテンツ管理ソフトウェアContent Repositoryの最新バージョンであり、文書共有、ウェブ制作、eコマースなどの分野を問わず、あらゆる種類のデジタルコンテンツを保存、共有して、チームで協働作業したり、ウェブサイトを公開したりできます。
- ビジネスプロセス管理(BPM)やエンタープライズ統合パターン(EIP)との統合: 組織はコンテンツとビジネスプロセスを単一のプラットフォームで管理することができ、効率性の向上と複雑さの軽減を実現します。
- システム開発やウェブサイトの公開: CMS、BPM、EIPの組み合わせにより、システム開発やウェブサイトの制作において、開発プロセスを合理化し、市場投入までの時間を改善することができます。
- カスタマイズと拡張性: このプラットフォームのアーキテクチャとデザインパターンは、カスタマイズとスケーラビリティを可能にし、企業が特定のニーズに合わせてプラットフォームを調整し、ビジネスの成長に合わせて拡張することを可能にします。
バージョン7では、検索機能が大幅に改善され、サジェストキーワード登録の自動化、そしてキーワード検索機能をより早く実装できるように改善されています。
Suggesterの使い方
サジェスト表示の実装工程は以下です:
- サジェストキーワードの登録
- 検索クエリーの作成
- Web APIの作成
1. サジェストキーワードの登録
サジェスト表示を始めるには、まず最初にサジェストキーワードを登録しておく必要があります。 Content Repository 7では、コンテンツに設定されたプロパティーをそのままサジェストキーワードとして登録することができる新機能が追加され、コンテンツの保存と同時にサジェストキーワードの登録もできるようになりました。 計算プロパティーを使えば、商品に設定されているブランド、商品名、バリエーションといった情報を基に、スクリプトで自動的にサジェストキーワードを作成できますから、サジェストキーワードの作成から登録まで、一連の流れを完全自動化することも可能です。

2. 検索クエリーの作成
サジェストキーワードを登録できたら、次は検索クエリーを作成します。 Content Repository 7では、コンテンツを検索する場合と同様の方法でサジェスト検索もできるようになりました。検索機能を使い分ける必要がなくなったことで、機能がより分かりやすくなり、ウェブ制作者の学習期間の短縮が見込めます。 Content Repository 7でサジェスト検索するには、次のようにXPathクエリーでauto complete句を使います。
//* auto complete top('ケーキ', 10)
top関数に指定しているのは、テキストボックスに入力された検索文字列と、取得する検索結果の数です。 コンテンツ検索と同様に、パスやプロパティーを条件に検索範囲を絞り込むこともできます。
- パスを指定すると、コンテンツのパスを条件に検索範囲を絞り込むことができます。
/jcr:root/content/ecommerce/items/pets/dogs//* auto complete top('to', 10)
- プロパティーを使うと、例えば、ウェブ訪問者が現在閲覧しているページに基づいて検索を行う、などというようにウェブ訪問者の利用状況にあわせた検索を行うこともできます。
/jcr:root/content/ecommerce/items//* [@category = 'pets'] auto complete top('to', 10)
3. Web APIの作成
検索クエリーができたらウェブトップにログインしてWeb APIを作成します。 ウェブトップでテキストエディターを使ってスクリプトを書いていきます。ローコードで簡単に作成できます。
// 検索文字列、絞り込み条件などのパラメーターを受け取る
def params = WebRequest
.create(context)
.with(request)
.parseRequest();
// 検索クエリーを作成する
// params.term: 検索文字列
// params.limit: 検索結果の数
def stmt = "//* auto complete top("
+ XPath.value(params.term)
+ ", "
+ params.limit
+ ")";
// サジェストキーワードを検索する
// limit=0を指定するとコンテンツ検索をスキップできる
def suggestions = [];
def result = XPath.createQuery(stmt)
.limit(0)
.execute();
for (suggestion in result.suggestionResult.suggestions) {
suggestions.add(suggestion);
}
// 検索結果を送信する
WebResponse
.create(context)
.with(response)
.setStatus(200)
.setContentType("application/json")
.write(JSON.stringify(suggestions));
ウェブトップ上ですぐに動作の確認もできますので、納得のいくまで、何度でも「書く」「試す」を繰り返しながら進めることができます。

Content Repository 7を試してみませんか?
もしもあなたがシステムの運用に費やす時間を減らして、より多くの時間を制作やクリエイティブな作業に費やしたいと願っているのであれば、このContent Repository 7の機能はその課題を解決する手段になり得るかもしれません。