Laravel+elasticsearch搜索词语搜索结果为空问题
当Laravel中的elasticsearch配置完成搜索单个字搜索成功,哇塞,好开心。。。。。但是搜索词语的时候都是空????嗯。。。。。。。。。不开心,所以就有了这篇笔记
1.查找tamayo插件
vendor/tamayo/laravel-scout-elastic/src/ElasticsearchEngine.php
2,找到performSearch方法
/**
* Perform the given search on the engine.
*
* @param Builder $builder
* @param array $options
* @return mixed
*/
protected function performSearch(Builder $builder, array $options = [])
{
$params = [
'index' => $this->index,
'type' => $builder->index ?: $builder->model->searchableAs(),
'body' => [
'query' => [
'bool' => [
'must' => [['query_string' => [ 'query' => "*{$builder->query}*"]]]
]
]
]
];
if ($sort = $this->sort($builder)) {
$params['body']['sort'] = $sort;
}
if (isset($options['from'])) {
$params['body']['from'] = $options['from'];
}
if (isset($options['size'])) {
$params['body']['size'] = $options['size'];
}
if (isset($options['numericFilters']) && count($options['numericFilters'])) {
$params['body']['query']['bool']['must'] = array_merge($params['body']['query']['bool']['must'],
$options['numericFilters']);
}
if ($builder->callback) {
return call_user_func(
$builder->callback,
$this->elastic,
$builder->query,
$params
);
}
return $this->elastic->search($params);
}
3.修改为
将 'must' => [['query_string' => [ 'query' => "*{$builder->query}*"]]]修改为
'must' => [['query_string' => [ 'query' => "{$builder->query}"]]]
4.在进行词语搜索完成
开心。。。。。。