Я пытаюсь научиться использовать elasticsearch (используя elasticsearch-php для запросов). Я вставил несколько данных, которые выглядят примерно так:
['id' => 1, 'name' => 'butter', 'category' => 'food'], ['id' => 2,'name' => 'buttercup', 'category' => 'food'], ['id' => 3,'name' => 'something else', 'category' => 'butter']
Теперь я создал поисковый запрос, который выглядит так:
$query = [ 'filtered' => [ 'query' => [ 'bool' => [ 'should' => [ ['match' => [ 'name' => [ 'query' => $val, 'boost' => 7 ] ]], ['match' => [ 'category' => [ 'query' => $val, 'boost' => 5 ] ]], ], ] ] ] ];
где $ val – поисковый запрос. Это работает хорошо, единственная проблема, с которой я сталкиваюсь: когда я ищу «масло», я нахожу идентификаторы 1 и 3, но не 2, потому что поисковик, похоже, соответствует только точным словам. Есть ли способ поиска «внутри слов» или, в терминах mysql, делать что-то наподобие WHERE name LIKE '% val%'?