ElasticPress 3.5

閲覧数: 51(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)タグ, , , , ,
PageSpeed Insights

はGoogleが提供する「ウェブページのコンテンツを解析し、ページの読み込み時間を短くするための方法  続きを読む

HHVMとPHP
blank

去年の夏「RedHat系LinuxからDebian系Linuxへ移行」した時、言語処理系もPHPから  続きを読む

いまさらdotproject、続き
blank

前回(これ)は古いオープンソースのプロジェクトマネジメントツール導入の話でした。当時PHPは5.3で  続きを読む

IT小ネタ
blank

夜明けがすっかり遅くなり、季節はすっかり秋になりました。でも今週は夏日もあり、変な季節感だったけど。  続きを読む

WP Fastest Cache
blank

サイトへのアクセスを高速化するには、いわゆる「キャッシュ系」のプラグインを導入するのが手っ取り早いし  続きを読む

テスト系
blank

AWSで稼動している本番系の環境は、Amazon Linuxという専用のOSです。一番近いディストリ  続きを読む

スポンサーリンク

コメントを残す

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