投稿日:2020年11月26日
今回は、RelevanssiというWordPressのページ内検索を強化するPlug-Inをご紹介します。
▲Relevanssi
インストールし有効化します。
▲ダッシュボードにUser searchesとAdmin searchが追加されます。
▲共通クエリ
検索上位20のユーザー検索クエリ、それらのクエリが何回検索されたか、それらの検索結果数を見ることができます。
リセットするには「Reset」と入力してResetボタンをクリックします。
サイト内検索のクエリを分析し、集客に役立てることができます。
▲管理者検索
この検索を利用して、WordPressからの制限を受けずにRelevanssi検索を行うことができます。ここでは、すべての投稿タイプを検索することができます。
ここからはRelevanssiの設定です。
▲Relevanssiをクリックすると詳細が開きます。
▲Overview、Indexing、Attachments、Searching、Logging、Excepts and highlights、Synonyms、Stopwords、Redirects、Debugging の10個のタブで構成されてます。
設定を行うタブと、説明文だけのタブがあります。
全てをこのページでは紹介し切れないので、説明文だけのタグは固定ページに翻訳したものを、設定を行うタブは、本ページにて紹介したいと思います。
Overview
和訳ページはこちら概要
02_Indexing
▲Save the optionsで設定を保存します。このボタンは最上部と最下部にあります。
Build the indexで検索のインデックスを作成します。
説明文を翻訳するとBuild the indexは既存のインデックスを空にしてから再構築を行います。
これはOverviewタグでも説明している通り、以降は自動化されますが、年に1回くらいの作成を推奨しています。
Index unindexed postsは、インデックス化されていない投稿を探し、インデックス化してくれます。
インデックスを空にせずインデックスされてない投稿のみをインデックス化します。
ビルドを中断しなければならない場合に使えます。
▼Build the index、Index unindexed postsをクリックすると下図のような進捗画面が表示されます。
▲インデックスはすぐに反応するはずです。数分経っても何も起こらない場合は、滞っている可能性があります。インデックスの問題の最も一般的な原因は、ショートコードとの互換性がないことです。また、Relevanssiをアップデートしたばかりの場合は、ブラウザのハードリフレッシュを行うことで、ブラウザが古いバージョンのRelevanssiスクリプトを使用しようとしていないことを確認することができます。
▲インデックスの状態
インデックス後の詳細が表示されます。
上の結果だと、
インデックスに3つの文書が含まれています。
インデックスには0個の用語が含まれています。
最低10個のポストIDがインデックス化されました。
不正確な場合はupdate the countsをクリックします。
▲インデックスオプション
このページの設定を変更した場合は、有効になる前にインデックスの再作成が必要です。
▲ポストタイプ
投稿、固定、添付ファイル(画像など)のインデックスをするかの選択をします。
説明文の翻訳は、「検索対象外」と表示されている投稿タイプをインデックス化したい場合は、気にせずにインデックス化することができますが、Searchタブの「Respect exclude_from_search」設定のチェックを外す必要があります。」
▼attachmentをチェックすると下図が展開されます。
▲画像のインデックス
このオプションを有効にすると、Relevanssiは画像をインデックスに含めます。このオプションを無効にすると、他の添付ファイルのみがインデックスに含まれます。
添付ファイルタイプのインデックス作成の詳細な制御については、Controlling attachment types in the Knowledge base. を参照してください。
▲タクソノミー
カテゴリー、タグ、投稿フォーマットのインデックスをするかの選択をします
説明文の翻訳は、「ここでタクソノミーをチェックすると、そのタクソノミーの用語は投稿と一緒にインデックス化されます。例えば “post_tag “を選択した場合、タグを検索するとそのタグを持つ全ての投稿が検索されます。」
▲コメント
none、comments、comments and pingbacksから選択します。
説明文の翻訳は「コメントをインデックスするかどうかは、コメントだけをインデックスするか、コメントとトラックとピングバックを含むすべてをインデックスするかを選択できます。」
▲カスタムフィールド
none、all、visible、someから選択します。
allは投稿のすべてのカスタムフィールドをインデックス化します。
visibleは、ユーザーインターフェイスで表示されているカスタムフィールド(アンダースコアで始まらない名前のもの)のみを表示します。
someは、インデックスを作成するカスタムフィールドを個別に選択することができます。
▲著者表示名
投稿者の表示名をインデックス化
投稿者表示名を検索すると、その投稿者の投稿が返ってきます。
▲抜粋
抜粋をインデックス化する
Relevanssiは、抜粋した内容で投稿を見つけます。
▲ショートコード
ショートコードを展開する
インデックス作成時のショートコードの展開
チェックした場合、インデックスを作成する前に投稿内容のショートコードを展開します。そうでない場合、ショートコードは削除されます。
ショートコードを使用して動的なコンテンツを含む場合、Relevanssiはインデックスを更新せず、インデックスはインデックスが作成された時点でのショートコードの状態を反映します。
▲Advanced indexing settings
Show advanced settingsをクリックすると、この下に掲載している図が展開されます。
▲最小の単語数
これより短い文字数の単語はインデックス化されません。
1文字検索を有効にするには、フィルタフック relevanssi_block_one_letter_searches に false を返すフィルタ関数を追加する必要があります。
add_filter('relevanssi_block_one_letter_searches', '__return_false');
しかし、このフィルターフックは日本語に対応してないと、Plug-In作者のMikko Saari氏が語っています。
私が考えた裏技として、Plug-In relevanssi ディレクトリ内、lib > search.php の1130行付近。
if (relevanssi_strlen($term) < 2) {
/**
* Allows the use of one letter search terms.
*
* Return false to allow one letter searches.
*
* @param boolean True, if search term is one letter long and will be blocked.
*/
if (apply_filters('relevanssi_block_one_letter_searches', true)) {
return null;
}
// No fuzzy matching for one-letter search terms.
$term_where_template = $basic_query;
}
▲この記述を全てコメントアウトすると1文字検索が可能になります。
※Plug-Inのバージョンアップの度に元に戻りますのでご注意ください。
※自己責任にてお願いします。
▲句読点の制御
ここでは、句読点の制御方法を調整することができます。詳細はヘルプを参照してください。ここでの変更はインデックスの再作成を必要とすることを覚えておいてください。
▲ハイフンとダッシュ
Keep、Replace with spaces、Removeから選択します。
ハイフンとダッシュ(enとemダッシュ)はどのように扱うべきですか? 一般的にはスペースで置き換えるのが最良の方法ですが、場合によっては完全に削除するのが最良の方法です。また、そのままにしておくことが最良の選択肢になることはほとんどありません。
▲アポストロフィーと引用符
Replace with spaces、Removeから選択します。
Relevanssiはアポストロフィーや引用符をどのように扱うべきか?これらをそのままにしておくことはできません。デフォルトではスペースで置き換えるようになっていますが、削除しても意味がある場合もあります。
▲アンパサンド
Keep、Replace with spaces、Removeから選択します。
Relevanssi はアンパサンドをどのように扱うべきか?一般的にはスペースに置き換えるのが最良の方法ですが、例えばD&Dの話が多い場合は、アンパサンドを残しておくと便利です。
▲小数点以下の区切り文字
Keep、Replace with spaces、Removeから選択します。
小数点間のピリオドはどのように扱うべきか?スペースで置き換えるのがデフォルトのオプションですが、これでは数字が完全に削除されてしまうことがよくあります。小数点以下の数字をたくさん検索する必要がある場合は、ピリオドは残しておいてください。
Hide advanced settingsをクリックするとAdvanced indexing settingsで表示していた項目が非表示になります。
全ての設定が済んだらSave the optionsをクリックします。
Attachments
和訳ページはこちら概要
Searching
以下より、項目ごとに説明します。
▲デフォルトの演算子
OR – any term preset is enougt、AND – require all termsから選択します。
検索のデフォルトの演算子を決定します。
要は、or検索かand検索を設定します。
▼AND – require all termsを選択すると下図が表示されます。
▲OR検索からのフォールバック
OR検索からのフォールバックを無効にします。
デフォルトでは、AND検索で結果が見つからない場合、Relevanssiは演算子をORに切り替えて再度検索を実行します。このオプションをチェックすることで、これを防ぐことができます。
▲デフォルトの並び順
Relevance (highly recommended)、Post dateから選択します。
上書きしたり、階層の並び順を使用したい場合(例えば、関連性による最初の並び順が、記事のタイトルによって同じ場合)、orderby
のクエリ変数を使用することができます。詳細については、ヘルプを参照してください。
▲キーワードの一致
Whole words、Partial words、Partial words if no hits for whole wordsから選択します。
「Partial words if not hits for whole words」オプションを選択すると、予想外の結果になる可能性があります。ほとんどの場合、”Partial words “オプションの方が良い選択となります。
Whole wordsとは、検索語全体を含む投稿のみを検索することを意味します。
Partial wordsは、インデックス内の単語が検索語で始まったり、検索語で終わったりする場合も含まれます(’ana’で検索すると’anaconda’や’banana’にはマッチしますが、’banal’にはマッチしません)。単語の中にもRelevanssiがマッチするようにしたい場合は、ヘルプを参照してください。
要は、完全一位か、部分一致、完全一致ではない場合に部分一致。
▲優先度
表組み内の優先度は乗数です。
優先度を大きくするには、より大きな数値を使用します。優先度を低くするには、1よりも低い数値を使用します。
コンテンツ、タイトル、コメント、タグ、カテゴリーが対象。
▲完全一致を最適化
完全に致するように最適化します。
このオプションを有効にすると、検索クエリがタイトルやコンテンツの中にフレーズとして含まれている一致した内容に重み付けが行われます。最適化を調整するには、relevanssi_exact_match_bonus
フィルタフックを使用します。詳細はヘルプを参照してください。
▲管理者検索
管理者検索にはRelevanssiを使用してください。
チェックを入れると、管理画面での検索にRelevanssiが使われます。ページ検索はWordPressの仕様のためRelevanssiを使用しません。
▲exclude_from_search を尊重する
カスタム投稿タイプの exclude_from_search
を尊重する
チェックした場合、「exclude_from_search」がtrueに設定されているカスタム投稿タイプの投稿は表示されません。
▲絞り込み検索
データベースが小さいので、このオプションを有効にする必要はありません。
このオプションを有効にすると、Relevanssiは検索結果を1タームあたり最大500件までに制限します。これによりパフォーマンスは向上しますが、関連するドキュメントが検索されなくなることがあります。詳細はヘルプを参照してください。
※throttleを「絞り」「絞り込み」というニュアンスで捉えました。
▲カテゴリに制限
すべての検索に対して、検索結果をカテゴリに制限することができます。検索ごとの制限やその他のオプション(タグの制限など)については、ヘルプを参照してください。
▲カテゴリの除外
これらのカテゴリの投稿は検索結果に含まれません。これらの投稿を完全にインデックスから除外するには、ヘルプを参照してください。
▲投稿を除外
検索結果からそれらのページを除外するには、投稿やページのIDをカンマで区切って入力してください
全ての設定が済んだらSave the optionsをクリックします。
Logging
▲ログを有効にする
ユーザークエリのログを保持します。
有効にすると、Relevanssiはユーザークエリをログに記録します。ログはダッシュボードの管理メニューの「ユーザー検索」で調べることができ、wp_relevanssi_logデータベーステーブルに保存されます。
▲ログユーザーIP
クエリでユーザーのIPを記録します。
この機能を有効にすると、ユーザーのIPアドレスがログに記録されます。なお、この機能はお客様がお住まいの地域では違法となる可能性があり、EUではGDPRに該当する人物登録が行われます。
▲ユーザーを除外する
ログに記録されない数値のユーザーID、もしくは、ユーザーログイン名をCSVリストから除外します。
▲ログを整形
何日分のログをデータベースに保存するか。
整形しない場合は0に設定します。
▲ログのエクスポート
ボタンを押すと、検索ログをCSVファイルとして書き出すことができます。
全ての設定が済んだらSave the optionsをクリックします。
Excepts and highlights
▲カスタム検索結果
カスタム検索結果の作成
これを有効にするのは、実際にカスタム抜粋を使用する場合のみです。
※ここをチェックしないと、以降が全てグレーアウトして設定できません。
▲スニペットの長さ
文字数の数値を入力し、words、charactersから選択します。
文字よりも単語を使う方が早いです。何か理由があるか、投稿が短い場合を除いて、文字は使わないでください。
▲抜粋で許可されるタグ
抜粋で許可したいタグをすべてリストアップします。例えば、<p>
<a>
<strong>
▲抜粋にカスタムフィールドを使用する
抜粋を構築するためにカスタムフィールドコンテンツを使用する
抜粋作成時のインデックス作成にもカスタムフィールドの設定を使用してください。このオプションを有効にすると、Relevanssiで生成された抜粋にカスタムフィールドの内容が表示されます。
現在のカスタムフィールド設定: すべてのカスタムフィールド
▲検索ヒットのハイライト表示
ハイライトのタイプ
No highlighting、<mark>、<em>、<strong>、Text color、Background color、CSS Style、CSS Classから選択します。
カスタムスニペットを動作させる必要があります。
Text color、Background color、CSS Style、CSS Classを選択した場合、下図が表示さるので、それぞれの設定を行います。
▲Text colorを選択した場合。
▼検索結果
▲Background colorを選択した場合。
▼検索結果
▲CSS Styleを選択した場合。
ハイライトは、スタイルのパラメータにこのCSSを指定して<span>
で包含します。
▲CSS Classを選択した場合。
ハイライトはこのクラス名を<span>
で包含します。
▲タイトルのハイライト
タイトルでクエリ用語を強調表示
タイトルのハイライトは、検索結果テンプレートの変更が必要です。検索結果テンプレートのthe_title()
をrelevanssi_the_title()
に置き換える必要があります。詳細については、コンテキストヘルプを参照してください。
▲ドキュメントのハイライト
ドキュメント内のクエリ用語を強調表示
ユーザーが検索結果から投稿を開いたときにハイライト表示されます。このためには、検索結果ページからのリンクに追加のパラメータ(ハイライト)が必要です。
▲コメントのハイライト
コメントでクエリ用語を強調表示
ユーザーが検索結果から投稿を開いたときに、コメントにヒットしたものをハイライト表示します。
▲ハイライトを展開
ハイライトを拡大して単語全体をカバー
ハイライトが単語の一部に一致する場合、このオプションを有効にすると、ハイライトが拡大されて単語全体がハイライトされます。
▼チェックなしの検索結果
▼チェックありの検索結果
どちらも句点がおかしな感じで選択されてます。
▲検索結果の内訳
抜粋での検索ヒット数の内訳
検索ヒットの内訳を抜粋で表示する。
動作するにはカスタムスニペットが必要です。
▲内訳のフォーマット
body%, %title%, %categories%, %tags%, %taxonomies%, %comments%, %customfields%, %author%, %excerpt% および %mysqlcolumns% を使用して、(投稿の異なる部分での) ヒット数、総ヒット数を %total%, ドキュメントの重みを %score%, 各検索語のヒット数を %terms% で表示します。
Synonyms
▲同義語
検索がより良い結果を見つけるためにここに同義語を追加します。ユーザーが頻繁に製品名のスペルミスをしていたり、他の理由で一つのものに多くの名前を使用していることに気付いた場合、同義語を追加することで検索結果をより良くすることができます。
ただし、同義語が多すぎると検索が混乱することがあるので、やりすぎないようにしてください:ユーザーは検索クエリがすべてに一致しない場合は理解していますが、予想外のものに一致する場合は混乱してしまいます。
ここでのフォーマットは、key = value
です。同義語のリストに dog = hound
を追加すると、dog
の検索は自動的にdog hound
の検索になり、dog
または hound
のどちらかを含む投稿にマッチします。これはOR検索でのみ動作します: AND検索では、同義語は検索を制限するだけで、今の検索はdog
とhound
の両方を含む投稿のみを検索します。
同義語は一方向のみです。両方の方向にしたい場合は、再び同義語を追加してください、逆に: hound = dog
.
dog = "great dane"
は機能しますが、"great dane" = dog
は機能しません。
Stopwords
▲ストップワード
ここに単語を入力すると、ストップワードのリストに追加されます。その単語は自動的にインデックスから削除されるので、再インデックス化は必要ありません。カンマで単語を区切って、多くの単語を同時に入力することができます。
❶追加するストップワード
データベース内のストップワードのリストです。ストップワードから削除するには、単語をクリックしてください。ストップワードを削除しても自動的にインデックスには戻りませんので、それらの単語をインデックスに戻すには、ストップワードを削除した後にすべての投稿を再インデックス化する必要があります。
カスタマイズしたい語句をここにカンマ区切りで入力し、Addをクリックします。
すると❷と❸に追加されます。
Romove all stopwordsをクリックで全て削除、Add default stopwordsをクリックすると❸に追加されます。
❸ストップワードのエクスポート可能なリスト
リストをバックアップしたり、別のブログにコピーしたり、そうでなければリストを必要とする場合は、ここでストップワードのリストをコピーすることができます。
コンテンツのストップワード
コンテンツストップワードはプレミアム機能で、投稿内容にのみ適用されるストップワードを設定することができます。ストップワードが投稿のタイトル、タグ、カテゴリ、カスタムフィールド、その他の部分に表示されていてもインデックスされます。コンテンツのストップワードを使用するには、Relevanssi Premiumが必要です。
❹インデックス内の25の最も一般的な単語
これらの単語は優れたストップワード素材です。データベース内のほとんどの投稿に出てくる単語は、検索するときにはかなり無意味です。これは、あなたの言語で利用可能なストップワードリストがない場合に、全く新しいストップワードリストを作成する簡単な方法でもあります。単語をクリックして、その単語をストップワードリストに追加します。その単語はインデックスからも削除されるので、インデックスを再構築する必要はありません。
❹の語句をクリックすると❸に追加されます。
Redirects
和訳ページはこちら概要
Debugging
▲デバッグ
投稿をインデックス化する際の問題点を把握するために、以下のフィールドに投稿ID番号を入力することで、Relevanssiが投稿をどのように見ているかをテストすることができます。
Relevanssi Premiumでは、投稿編集ページで各投稿に対してこの機能を確認することができます。Relevanssi Premiumの購入はこちらから。
DeepL翻訳を使用しましたが、そのまま記載するのではなく、おかしいと思った箇所は自分なりに訳しました。
それでも、おかしな箇所があると思いますが、そこはご容赦ください。
Webやプログラムを勉強するには英語は避けては通れないので、地道に勉強したいと改めて思いました。
Relevanssi
正直、ここまで高機能とは思いもしませんでした。
全てを把握し使いこなすには、何度も試行錯誤が必要かと思います。
こちらも、地道に勉強したいと思います。
最後まで読んでくださりありがとうございました。