ElasticPress 3.5

閲覧数: 8(3)

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閑話, 公開タグ, , , ,
検索精度を高める
2020年11月1日

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

ElasticPress日本語設定2020年版
blank
2020年10月29日

ElasticsearchをWordpressで利用するためのプラグインであるElasticPres  続きを読む

Elasticsearch 6.8.11
blank
2020年10月2日

2017年末に「2.4.6」から「5.6.5」へバージョンアップして以来の大幅バージョンアップです。  続きを読む

パンくずリスト詳細
blank
2020年5月12日

テーマの「マイナーチェンジ」に伴って「パンくずリスト」の仕様を若干変更しました。一つ前のテーマではパ  続きを読む

カテゴリーを制限する
blank
2020年5月11日

過去に何度も書いた「カテゴリー制限」の話、元はと言えば初期に書かれた「非公開」の記事が原因です。トッ  続きを読む

マイナーチェンジ
blank
2020年3月23日

かれこれ一年近くほったらかしだったので、気合をいれて「テーマ変更」と思っていたのですが、、、いろいろ  続きを読む

コメントを残す

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