検索時にキーワード候補を表示してくれる Swiftype Search
スポンサーリンク
Swiftype Searchは、検索候補を自動的に表示してくれるプラグインです。
クラウド上に検索結果となる投稿を保存し、それを呼び出します。
FacebookやJimdoなど、大手サイトも採用しているそう。日本語に完全に対応されているわけではないため、利用にはやや工夫が必要です(後述)。
要ユーザー登録
アカウントは、1ドメイン・1サーチエンジンに限れば無料。
最近は、「簡易機能は無料・それ以上は有料」のプラグインサービスが増えてますね。有料会員を集めているだけあって、このようなプラグインは常に最新に保たれているところが安心です(個人で作っているプラグインは、放置されているものも結構ある)。
尚、無料で利用する場合は(1)フッターにSwiftypeへのリンク(2)検索結果ページにロゴを入れて欲しい旨が書いてありました。素晴らしい機能を無料で使わせて頂けるので、気分良くリンクしましょう!
簡単なデモ動画もあります。英語ですが何となくはわかるので、検討にどうぞ。
Swiftypeの使い方 もくじ
- Swiftypeにサインアップ
- プラグインをインストール
- Swiftypeの設定(WordPress側)
- Swiftypeの設定(クラウド側)
- 検索結果のカスタマイズ
- 日本語での利用は工夫が必要
- まとめ
1. Swiftypeにサインアップ
先述の通り、このプラグインは、Akismet(コメントスパム駆除の定番プラグイン)等と同様、ユーザー登録をしてAPI keyを得る必要があります。※ユーザー登録はプラグインインストール後でも構いません。
トップページから「(Skip and) create a free acount」と書かれているリンクをクリックした先の登録ページで、名前・Emailアドレス・パスワード(・電話番号は任意)を入力。あとは「SIGNUP」をクリックするだけです。
「Welcome to Swiftype!」(Swiftypeへようこそ!)という確認メールが届き、すぐに使えるようになります。
2. プラグインをインストール
通常のプラグインのインストール方法と同様です。
- [ダッシュボード]>[プラグイン]>[新規追加]から、Swiftype Searchを検索
- 検索結果リストから、Swiftype Searchを探して、「今すぐインストール」をクリック
- インストールが完了したら、「プラグインを有効化」をクリック
3. Swiftypeの設定(WordPress側)
インストールが完了すると、ダッシュボードの左メニューの下のほうに、「Swiftype Search」のメニューが出来ます。
WordPress側で行う設定は、API keyを入れて、クラウド側と同期させるだけです。
一度同期させれば、投稿が増えても自動でインデックスを更新してくれます。
3-1. API Keyを入手
ユーザー登録をしたSwiftypeのサイトからAPI keyをコピー。見当たらない場合は、左上の「Account Settings」をクリックすると出てきます。
3-2. API KeyをWordPress側で入力
[ダッシュボード]>[Swipetype]から設定画面を開き、先ほどコピーしたAPI Keyを入力し、「Autorize」をクリック。
3-3. サーチエンジン名を決める
無事API Keyが認識されると、以下の画面になります。
次に、適当なサーチエンジン名(例:Welcustom)を入れて、「Create Engine」をクリック。
3-4. クラウド側と同期させて、投稿をインデックスさせる
サーチエンジンが生成されると、以下の画面になります。
最後に、クラウドと同期させて投稿をインデックスさせるため、「SYNCHRONIZE WITH SWIFTYPE」をクリック。
同期は10秒程度で完了します。「INDEXING COMPLETE!」(インデックス完了!)という表示が出ればOK。
これでWordPress側での作業は終了です。
4. Swiftypeの設定(クラウド側)
3までで作業は完了しているので、クラウド上で行わなければいけない設定は特にありません。
ダッシュボードへアクセスすると、以下の項目の確認が出来ます。
- OVERVIEW:概要
- CONTENT:インデックスされている投稿の一覧
- RESULT CONTROLS:検索順位の入れ替えや、特定の投稿を削除・追加が可能
- ANALYTICS:検索キーワードや検索数の解析
- INSTALL:Freeプランを使っているなら、リンク入れてね!のお願いが読める
RESULT CONTROLSでは、検索結果の表示順位の入れ替え・特定の投稿を削除・任意の投稿を追加することが可能です。
この辺の直観的な操作は、iPhoneなどを使っている方にはわかりやすいのではと思います。
5. 検索結果のカスタマイズ
検索結果をもっとカスタマイズしたい場合は、フィルターフックを使います。コードは使用中テーマのfunctions.phpに記入。
公式サイトのQ&Aにも丁寧な回答が数多くあるので、カスタマイズに詰まった場合は読んでみるといいと思います。
5-1. カテゴリーを限定(除外)したり、固定ページを除外したりする
カテゴリーを限定したり、検索結果から固定ページを外したりする場合には、swiftype_search_paramsというフィルターを使います。
(例)カテゴリーIDが15と20に属する投稿のみに限定したい場合
function my_swiftype_search_params( $params ) { $params['filters[posts][category]'] = array(15, 20); return $params; } add_filter( 'swiftype_search_params', 'my_swiftype_search_params', 8, 1 );
(例)固定ページを検索結果から除外する場合
上記の3行目の部分を以下のように変更します。
function my_swiftype_search_params( $params ) { // set the categories to allow $params['filters[posts][object_type]'] = array( 'post' ); return $params; } add_filter( 'swiftype_search_params', 'my_swiftype_search_params', 8, 1 );
これらは検索フォームの検索候補表示(オートコンプリート)では働かず、飽くまでも検索結果ページに於いてのフィルターです。
検索候補(オートコンプリート)にもフィルターを適用させる場合は、以下のようなjavascriptを<head>内に記載します。
(例)カテゴリーID15とID20に限定する場合
<script type="text/javascript"> var swiftypeConfig = { filters: { posts: { category: [15, 20] } } }; </script>
スクリプトは基本的にはwp_enqueue_scriptで読み込んだほうがいいですが、わからなければ<head>内のwp_head()後に読み込めばいいでしょう。
詳しいカスタマイズ方法は、以下のページにも掲載されています。
Customizing Results with the Swiftype Search WordPress Plugin
5-2. カスタムフィールドの値も検索対象にすることも可能?
カスタムフィールドの値も検索可能にする場合は、swiftype_document_builderというフィルターフックを利用する・・・ということが書いてありました。
(例)priceというカスタムフィールドを検索可能にする場合
function update_swiftype_document( $document, $post ) { $document['fields'][] = array( 'name' => 'price', 'type' => 'integer', 'value' => get_post_meta( $post->ID, 'price', true ) ); return $document; } add_filter( 'swiftype_document_builder', 'update_swiftype_document', 10, 2 );
(参照)Can the Swiftype WordPress plugin index custom post metadata?
が、私はどうもうまく行きませんでした。この辺はまだまだ要検証です。
6. 日本語での利用は工夫が必要
Swiftypeは多言語対応ではありますが、日本語についてはまだ若干の改善点もあります。
6-1. 検索結果で日本語がきちんと認識されない
検索候補(オートコンプリート)機能ではそれほど感じませんが、Swiftypeが出す検索結果を見ると、日本語の単語がきちんと認識されません。
(例)「うさぎ」と検索→「う」or「さ」or「ぎ」を含む投稿が対象になる(つまり殆どの記事が検索結果に出てしまう・・・)
この点について問合せをしたところ、すぐに返事があり(さすが有料プランも用意している会社)、
「申し訳ございませんが、日本語の単語への対応はまだ出来ておりません。ロードマップとして対応の計画はされておりますが、時期につきましてはまだはっきりお伝え出来かねる状況です」(拙訳)
との返事が。
仕方なくここは当面の解決策として、Swiftypeが吐き出す検索結果を使わないようにすることで対応してみました。この場合、当然ながらクラウド側でカスタマイズした検索順位の変更等は反映されません。
プラグインフォルダ内にあるclass-swiftype-plugin.phpの47行目の以下の行を消します。
add_action( 'pre_get_posts', array( $this, 'get_posts_from_swiftype' ) );
これにより、検索結果はクラウド側のものではなく、WordPress側が出す日本語対応済みものが表示されます。
ただし、プラグインフォルダ内のファイルをカスタマイズすることになるため、プラグインの更新時には上書きされ元に戻ってしまいます。
6-2. 検索候補(オートコンプリート)は変換を確定しないと動かない点に注意
例えばGoogleの検索窓では、変換前の入力でも自動で候補を表示してくれます。
一方Swiftypeでは、変換完了後に検索候補を表示。
やはり日本語対応は発展途上ということもあり、今は表示されるだけ有難いところでしょう。
7. まとめ
日本語ではまだ少々工夫や我慢が必要なものの、変換のない欧米の言語でサイトを運営している場合には、そのようなことは気にせず使える文句なしのプラグインだと思います。
更にカスタマイズする場合は、以下のチュートリアルも用意されていますのでどうぞ(英語)。
「検索結果」ページを経ずに目的のページに行けるのは、ユーザー目線で考えたら有難いので、試してみる価値アリではないでしょうか。
※ローカル環境(Chromeにて確認)でも動きました。
Q&Aを探してもカスタマイズ方法が見つからない場合は、メールで問合せてみるのも一つです。とても丁寧な答えが返ってきます。もちろんお礼の返信も忘れずに。