ElasticPress 3.5.6
マイナーバージョンアップにも関わらず、検索スコアリングのパラメータが微調整された結果、期待する検索結果が得られなくなってしまいました。プラグインが持つ機能とは別に、求める検索結果のため、いくつかの修正を加えているので、それらが影響していることも考えられますが、まずは3.5.5から3.5.6へのバージョンアップに伴って変更されたところから確認します。
管理画面からプラグインを新しいバージョンへ更新します。ターミナルを使ってSudachi用のマッピングパラメータを追加・変更し、プラグイン管理画面からインデックスを作成します。この状態でプラグインのバージョンをターミナルを使って手動で古い版へ戻します。インデックスは新しくて、検索パラメータが古い状態を作り出し、テスト用検索ワードで確認します。この状態では期待する検索結果が得られます。
と言うことは、インデックスに問題があるわけではなく、検索パラメータ側に課題があることになります。過去には検索結果のため、いろいろ改修を加えていましたが、現在は「検索精度を高める」で採用した方法のみが適用されています。
バージョンアップに伴って変更されたパラメータを確認すると、weight_recent()関数の「’score_mode’」と「’boost_mode’」に違いがあることがわかりました。前者が「’avg’」から「’sum’」に、後者が「’avg’」から「’multiply’」に変更されていることがわかり、それぞれを元に戻して検索結果がどう変化するか確認します。どうやら「’boost_mode’」のパラメータが影響を及ぼしているようなので、ここを変更することにします。今回は「’score_mode’」に合わせ「’sum’」とします。
/**
* Weight more recent content in searches
*
* @param array $formatted_args Formatted ES args
* @param array $args WP_Query args
* @since 2.1
* @return array
*/
public function weight_recent( $formatted_args, $args ) {
if ( ! empty( $args['s'] ) ) {
if ( $this->is_decaying_enabled() ) {
--- 中略 ---
* Filter search date weighting boost mode
*
* @hook epwr_boost_mode
* @param {string} $boost_mode Current boost mode
* @param {array} $formatted_args Formatted Elasticsearch arguments
* @param {array} $args WP_Query arguments
* @return {string} New boost mode
*/
// 'boost_mode' => apply_filters( 'epwr_boost_mode', 'multiply', $formatted_args, $args ),
'boost_mode' => apply_filters( 'epwr_boost_mode', 'sum', $formatted_args, $args ),
),
);