ElasticPress 3.5

閲覧数: 40(0)

Elasticsearch用のプラグインであるElasticPressがメジャーバージョンアップ(3.5)しました。とりあえずそのまま使ってみましたが、残念ながら下位互換が無く、インデックスを作成する方は従来の設定で期待した結果が得られましたが、検索の方はそのままでは期待した結果が得られませんでした。

         * Filter default post search fields
         *
         * @hook ep_search_fields
         * @param  {array} $search_fields Default search fields
         * @param  {array} $args WP Query arguments
         * @return  {array} New defaults
         */
        $search_fields = apply_filters( 'ep_search_fields', $search_fields, $args );

        $search_algorithm_version = apply_filters( 'ep_search_algorithm_version', '3.5' );

        $search_text = ( ! empty( $args['s'] ) ) ? $args['s'] : '';

        if ( '3.5' === $search_algorithm_version ) {
            $query = array(
                'bool' => array(
                    'should' => array(
                        array(
                            'multi_match' => array(
                                'query'  => $search_text,
//                              'type'   => 'phrase',
                                'type'   => 'best_fields',
                                'fields' => $search_fields,
                                /**
                                 * Filter boost for post match phrase query
                                 *
                                 * @hook ep_match_phrase_boost
                                 * @param  {int} $boost Phrase boost
                                 * @param {array} $prepared_search_fields Search fields
                                 * @param {array} $query_vars Query variables
                                 * @return  {int} New phrase boost
                                 */
                                'boost'  => apply_filters( 'ep_match_phrase_boost', 3, $search_fields, $args ),
                            ),
                        ),
                        array(
                            'multi_match' => array(
                                'query'  => $search_text,
                                'fields' => $search_fields,
                                'type'   => 'phrase',
                                'slop'   => 5,
                            ),
                        ),
                    ),
                ),
            );
        } else {

バージョン3.5で新たに追加された部分であるMulti-matchの「type」指定の値を「phrase」から「best_fields」に変更します。デフォルトが「best_fields」なので「type」指定をコメントアウトするだけで良いとは思いますが、ここは念のため明示的に「best_fields」指定とします。「phrase」指定では文字列を完全一致で検索するようなので部分一致でも検索できる仕様への変更です。個人的にはもう少し絞り込みたいところではありますが、とりあえず現状はこれでOKとして引き続き調査を進めたいと思います。

インデックスの作成の方は「従来」の手法です。また、検索でヒットした単語をハイライトする機能が追加されましたが、日本語(マルチバイト)対応されていないため、表示が崩れる場合があるのでこれも無効に設定しました。せっかくのメジャーバージョンアップでしたが、追加された機能がほぼ使えないという残念な状態になってしまいました。もともと日本語(マルチバイト)対応していないようだったので想定内ではありますが。。。

「sudachi_tokenizer」を指定した日本語分かち書きの確認です。

curl -XGET 'http://localhost:9200/arigatojp-post-1/_analyze?pretty' -H "Content-Type: application/json" -d '{ "tokenizer": "sudachi_tokenizer", "text": "日本人としては長い休み" }'
{
  "tokens" : [
    {
      "token" : "日本人",
      "start_offset" : 0,
      "end_offset" : 3,
      "type" : "word",
      "position" : 0
    },
    {
      "token" : "と",
      "start_offset" : 3,
      "end_offset" : 4,
      "type" : "word",
      "position" : 1
    },
    {
      "token" : "し",
      "start_offset" : 4,
      "end_offset" : 5,
      "type" : "word",
      "position" : 2
    },
    {
      "token" : "て",
      "start_offset" : 5,
      "end_offset" : 6,
      "type" : "word",
      "position" : 3
    },
    {
      "token" : "は",
      "start_offset" : 6,
      "end_offset" : 7,
      "type" : "word",
      "position" : 4
    },
    {
      "token" : "長い",
      "start_offset" : 7,
      "end_offset" : 9,
      "type" : "word",
      "position" : 5
    },
    {
      "token" : "休み",
      "start_offset" : 9,
      "end_offset" : 11,
      "type" : "word",
      "position" : 6
    }
  ]
}
カテゴリーIT閑話, 公開タグ, , , ,
ElasticPress 3.5.6

マイナーバージョンアップにも関わらず、検索スコアリングのパラメータが微調整された結果、期待する検索結  続きを読む

閲覧数まとめ
blank

閃きついでに総合計と週合計をフラグで制御する方式に変更してみた。これまではベタに関数をまるまるコピー  続きを読む

ページナビのテキスト
blank

記事ページの下部に前後の記事(投稿)へのリンクが表示される仕様なのだが、「カテゴリーに制限」をかけて  続きを読む

閃きは大事だw
blank

このサイトは、あくまでもCMSであるWordPressの構築やクラウドであるAWSの運用ノウハウ取得  続きを読む

タイトルを抜粋する
blank

関連記事プラグインを使って、記事本文の下に「関連記事」を表示している。情報としては、タイトル、画像、  続きを読む

検索精度を高める
blank

検索ネタを連発するのはElasticsearchやElasticPressがバージョンアップした時の  続きを読む

スポンサーリンク

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください