1. 程式人生 > >ElasticSearch-PHP:自定義分詞規則 Mappings的建立

ElasticSearch-PHP:自定義分詞規則 Mappings的建立

由於專案索引的資料格式,綜合優化的考慮 決定自定義ES的分詞格式。

例如 專案的儲存的資料可能是  a=1&a=2&b=3&c=4

檢索的時候帶過來的條件: a=2   ,  b=3

所以完全可以按照 “&” 符號來分詞,把類似 “a=1”這樣的資料當作是一個詞

建立索引的時候按照這個規則分詞並索引,

查詢的時候把條件也這樣拆分 再來查詢匹配

以下就是建立這樣一個mapping的程式碼:

public function createAnalysis(){
        $index_params=[
            'index'=>'test_index',//需要被設定的索引名
            'body'=>[
                'settings'=>[
                    'analysis'=>[
                        'analyzer'=>[
                            'my_analyzer'=>[
                                'tokenizer'=>'my_tokenizer'
                            ]
                        ],
                        'tokenizer'=>[//定義分詞規則
                            'my_tokenizer'=>[
                                'type'=>'pattern',
                                'pattern'=>'&' //按照指定的符號分詞
                            ]
                        ],
                    ]
                ],
                'mappings'=>[
                    'ad_type_test'=>[ //被設定的索引的TYPE
                        'properties'=>[
                            'tags'=>[ //被設定的索引中_source中的欄位
                                'type' =>"string",
                                'analyzer'=>'my_analyzer',//設定建立索引的時候按照定義的分析格式分詞
                                'search_analyzer'=>'my_analyzer'//設定查詢的條件也按照定義的分詞格式分詞
                            ]
                        ]
                    ]
                ]
            ]
        ];
        $this->esClient->indices()->create($index_params);//執行建立
    }