2017-10-05 24 views
0

私はelasticsearchで検索し、phpで結果を表示したいと思います。私はそれが元のためにMySQLでありますように部分一致を作りたい:PHP elasticsearch部分一致

select * from table_name where title like '%abc%' 

しかし、仕事doesnの `t私のコード:

$params = [ 
    'index' => 'my_index', 
    'type' => 'my_type', 
    'body' => [ 
     'query' => [ 
      'match' => [ 
       'title' => '.*abc.*' 
      ] 
     ] 
    ] 
]; 
+0

フィールドを別の方法でトークン化する必要があります。 (何かngramフィルタ) このリンクを確認してください https://www.elastic.co/guide/en/elasticsearch/guide/current/ngrams-compound-words.html – Vigikaran

+0

あなたのインデックス設定、 – Vigikaran

答えて

0

私が代わりに「正規表現」

$params = [ 
    'index' => 'my_index', 
    'type' => 'my_type', 
    'body' => [ 
     'query' => [ 
      'regexp' => [ 
       'title' => '.*abc.*' 
      ] 
     ] 
    ] 
]; 
の「一致」を使用していました