HOME > 開発者向けBLOG > Ext JS >  より速く、Sencha フォーラムのより良い検索方法

Technology Note 開発者向けBLOG

Ext JS

より速く、Sencha フォーラムのより良い検索方法

こんにちは、ゼノフィkotsutsumiです。

この記事は、US Sencha社ブログ “Faster, Better Search for Sencha Forums”を翻訳したものです。

今年Senchaフォーラムで大きな改善にしたかった。 JIRA integration and trendsを追加することによって開始しました。 次に、検索をより良く設定します。 ここではコミュニティの検索をより有用にしました。


背景

Senchaフォーラムは、vBulletinに組み込まれている機能を利用しています。 vBulletin の組み込みの検索は、かなり正確に多くの高度な検索オプションを提供していることがわかりました。 検索結果にテンプレートを使用して表示することもできます。 1つ問題があります、それは、大規模なコミュニティのために最適化されていないと、 Google 検索パフォーマンス上の理由でネイティブの検索を行わなくてはならないことです。

Google の検索は非常に高速だったのですが、特定のフォーラムを検索ができませんでした。 そして、検索結果をオリジナルのテンプレートで表示できませんでした。 今回、これらの問題の他にサーバーの負荷の問題を修正しました。

Senchaフォーラムで、両方を実現することができていませんでした。 目標は、精度を損なうことなくが高速、柔軟かつ簡単に、検索を行うことでした。 最優先事項は、その両方の精度とパフォーマンスになっていました。


テクノロジー

新しい検索サービスのコアは、 Apache SolrApache Luceneプロジェクトからオープン ソースのエンタープライズ検索プラットフォームとして提供されているものを使用します。 Apache Solrの心臓部は、Lucene Coreといい、Javaで実装されている高度な検索エンジンライブラリです。 非常に高速にインデックスを作成し、かつ非常に正確で、大規模なドキュメント検索を行うように設計されています。 Lucene Coreを拡張したApache Solr は、便利なRESTful API、高度なテキスト分析、クエリ パーサーの拡張機能、Delta インポートとFull インポート機能など多くの機能を提供します。

Apache Solr は、今回のプロジェクト目的である高パフォーマンス検索にぴったりだった。 高パフォーマンスだけでなく、カスタマイズして関連性ルールなどを制御することが必要だった。 また、誰にでも使いやすい、柔軟でユーザーのためになる検索クエリのインタ フェースを提供したかった。 Solrは、それらの条件を満たすものでした。


スマートクエリー

新しい検索は非常に柔軟です。 基本的にシンプルで、必要に応じて高度なクエリーを使用できます。 新しい検索インターフェイスでは「高度なオプション」フォームを開くことなく、 高度なオプションの (条件) を検索できます。 この機能を’スマート クエリー’ を呼んでいます。 しかし、「オプション」ダイアログを使用して条件を追加、削除できます。

次がスマートクエリーの例です。

grid -title:(cell row) +author:mitchell* from:2011-01-01 to:2012-01-01 #ext4 #st2


この検索リクエストを解析する前に、少しシンタックスについてお話します。 現在4つのフィールド(タイトル、著者名、from、to)から検索することができます。 フィールドごとに、結果から値を含めるか含めないかを設定できます。 そのフィールドに一致するものを除外するには、ただ’-'(マイナス)記号を追加します。 マッチするものを含める場合は、’+'(プラス)記号を追加します。 これはデフォルトの動作です。 上記の例は、”grid”を検索しますが、 ‘(cell row)’が含まれる物を除外します。 また、著者名に’mitchell*’が含まれるものを探します。 この機能は、柔軟かつ正確にフィールドに含まれる値を含む、除外が指定できます。 また、フィールドごとに複数のマッチを指定することもできます。

フィールドに渡す値は、非常に柔軟で、複数の形式で指定できます。 “grid”のよう単純な用語を指定するか、上記例の様に括弧を使用できます。 括弧の中では、ANDとORが使用できます。 括弧内の暗黙の動作は AND で接続して、複数の条件を扱うことです。 言い換えれば、 ‘(cell row)’ は、’(cell AND row)’と同じです。 上記例の場合、’cell’と’row’がタイトルに含まれる結果を除外します。 値のどこでもワイルドカードとしてアスタリスクを利用することもできます。 この例では、’mitchell*’ は、’mitchell’から始まる著者名のユーザーが、記述した記事を返します。 また、括弧内でもワイルドカードを利用することができます。 ワイルドカードから始まり、’cell’で終わるもの、かつ、’row’から始まるものと一致します。

。 “from”と”to”フィールドを使って、任意の指定された日付の範囲内で検索することもできます。 2つの注意点があります。 最初に、1つの日付で検索することができます。 次に、”from” と “to” に含まれる日付フォーマットで絞り込まれたtitleとauthorフィールドを取得することができます。 フォーマットは、YYYY-MM-DDです。 例では、’2011-01-01′ と ’2012-01-01′ と記述しています。

どのフォーラムを検索するかも指定できます。 ハッシュタグをクエリーに追加することによって、これを行うことができます。 上記の例では ‘#ext4′ と ‘#st2′ を使用し、Ext JS 4 とSencha Touch 2 のフォーラムを探します。 ハッシュタグで指定されたフォーラムの下を検索します。 #ext4 は Ext JS 4 フォーラム、 #st2 はSencha Touch 2 のフォーラムが含まれます。 プレミアムコンテンツも検索対象です。 もし製品に複数のバージョンがある場合(Ext JSは4つのバージョンがあります)は、 複数のバージョンを含むタグがあります。 例えば、’#ext’は、Ext JSに関する全てのフォーラムが含まれます。 利用可能なハッシュは次の通りです。

  • #general
  • #premium
  • #ext
  • #ext4
  • #ext3
  • #ext2
  • #ext1
  • #st
  • #st2
  • #st1
  • #gxt
  • #gxt3
  • #gwt2
  • #gwt1
  • #architect
  • #architect2
  • #designer1
  • #market
  • #io
  • #animator
  • #international

ユーザーインタフェース

http://www.sencha.com/forum 根本的に、検索サービスがとても速いので、同じくユーザーインタフェースも速くて、シンプルで柔軟なものにしたかった。 メインの検索入力は、Google の検索ボックスのインデックスページと同じものです。 検索するために、ただクエリーをいれて、エンターを押す、または検索アイコンを押すものです。

デフォルトでは、検索結果はポップアップのモーダル ダイアログ ボックスに表示されますが、 ダイアログの右上の”Open”リンクをクリックして、ページビューで見ることができます。 任意の条件、またはフォーラムのハッシュタグを指定した場合は、 それらを 検索ボックスと結果パネルの間に、それが表示されます。 それぞれの結果は、マッチしたテキストが緑色にハイライトされて表示されます。 結果をクリックすると、ソース記事に直接行くことができます。

The Forums tab allows you to pick individual forums to include and is more granular than the hashtags we support in the search command line.

マッチした結果に、”Options”をクリックして設定を追加することもできます。 ウィザード形式で、GUI形式でマッチングルールを追加できます。(スマートクエリーを自分で入力したくない場合) オプションダイアログには、3つのタブがあります。条件、フォーラム、設定です。 条件タブには、新しいルールを追加できます。 フォーラムタブでは、対象のフォーラムを選択することができ、検索コマンドラインよりも多くの サポートするハッシュタグも選択できます。

設定タブでは、デフォルトの検索設定を構成できます。

  • 継続フォーラム選択— チェックすると、フォーラムタブの選択のフォーラムすべての検索で使用されます。
  • フォーカス時の発光— チェックすると、フォーカスに検索入力ボックスの幅が広がります。オフの場合、または Internet Explorer を使用している場合は、フィールド幅が最大になります。
  • 新しい検索ページをリセット— チェックすると、各新しい検索は、最初のページにリセットされます。
  • 結果表示— これは、ページ ビューまたは、ポップアップ ビューが検索結果の既定の表示モードであるかどうかを選択することができます。
  • ページ更新— チェックすると、”Save” ボタンをクリックすると、オリジナルの検索ページにリセットされます。

私たちは、新しいSencha フォーラムの検索が便利であることを願っています。 簡単かつ迅速に、すばらしいアプリケーションの構築に必要な情報を検索できるように構築しました。 提案やバグがある場合は、コミュニティのためのこのサービスなので、このフォーラムに投稿してください。 私たちは、その対応を一生懸命を行います。

PAGETOP