Php Laravel 8:Elasticsearch无法正确返回搜索结果
我正在与Laravel 8合作开发我的论坛项目,对于网站的搜索引擎,我想使用Elasticsearch搜索问题标题 因此,我成功地将其添加到项目中,并在Php Laravel 8:Elasticsearch无法正确返回搜索结果,php,laravel,
elasticsearch,laravel-8,laravel-scout,Php,Laravel,
elasticsearch,Laravel 8,Laravel Scout,我正在与Laravel 8合作开发我的论坛项目,对于网站的搜索引擎,我想使用Elasticsearch搜索问题标题 因此,我成功地将其添加到项目中,并在App\Search目录中创建了一个名为QuestionRule.php的新规则文件,如下所示: public function buildQueryPayload() { return [ 'must' => [ 'function_score' =>
App\Search
目录中创建了一个名为QuestionRule.php
的新规则文件,如下所示:
public function buildQueryPayload()
{
return [
'must' => [
'function_score' => [
'query' => [
'multi_match' => [
'query' => $this->builder->query,
'fields' => ['title']
]
],
'min_score' => 1
]
]
];
}
然后尝试将此方法添加为搜索表单的操作:
public function search(Request $request)
{
$validate_data = Validator::make(request()->all(),[
'srch' => 'required',
])->validated();
$result = Question::search($validate_data['srch'])->paginate(10);
dd($result);
}
但现在的问题是,它不会返回任何东西,我的意思是即使我添加$result=Question::search('laravel')->paginate(10)代码>虽然某些问题标题中已经存在laravel关键字,但它会将其作为dd()
输出返回:
那么这里出了什么问题?如何正确返回搜索结果
这也是我的Question.php
模型:
use Searchable;
protected $indexConfigurator = QuestionConfigurator::class;
protected $searchRules = [
QuestionRule::class
];
// Here you can specify a mapping for model fields
protected $mapping = [
'properties' => [
]
];
protected $fillable = ['user_id', 'title' , 'body','category','private','slug'];
public function toSearchableArray()
{
return $this->toArray();
return Arr::only($array, ['title', 'body']);
}
如果你能帮我解决这个问题,我会非常感激
提前谢谢
search.blade.php
:
<form method="GET" action="{{ route('search') }}">
<div class="main">
<div class="input-group BSinaBold">
<input type="text" name="srch" class="form-control" placeholder="Search questions">
<div class="input-group-append">
<button class="btn btn-secondary" type="submit">
<i class="fa fa-search"></i>
</button>
</div>
</div>
</div>
</form>
Route::get('search' , [HomeController::class, 'search'])->name('search');
试试这个
public function search(Request $request)
{
if($request->has('srch')){
$result= Questin::search($request->input('srch'))->paginate(10);
}
dd($result);
}
下面的链接将帮助您
你建立索引了吗?试试这个'protected$mapping=array('title'=>['type'=>'text','analyzer'=>'standard',],'body'=>['type'=>'text','analyzer'=>'standard',])`@KurtFriars是的我试过了你试过我说的吗you@Basharmal是,但仍然为空结果仍然为空结果!!