Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 8:Elasticsearch无法正确返回搜索结果_Php_Laravel_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Laravel 8_Laravel Scout - Fatal编程技术网 elasticsearch,laravel-8,laravel-scout,Php,Laravel,elasticsearch,Laravel 8,Laravel Scout" /> elasticsearch,laravel-8,laravel-scout,Php,Laravel,elasticsearch,Laravel 8,Laravel Scout" />

Php 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' =>

我正在与Laravel 8合作开发我的论坛项目,对于网站的搜索引擎,我想使用Elasticsearch搜索问题标题

因此,我成功地将其添加到项目中,并在
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是,但仍然为空结果仍然为空结果!!