ElasticSearch-PHP:自定義分詞規則 Mappings的建立
阿新 • • 發佈:2019-02-16
由於專案索引的資料格式,綜合優化的考慮 決定自定義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);//執行建立 }