【问题标题】:Meilisearch error when I use where() statement to filter results is returned by meilisearch当我使用 where() 语句过滤结果时,meilisearch 错误由 meilisearch 返回
【发布时间】:2021-10-14 06:22:39
【问题描述】:

我正在使用 Meil​​isearch 作为 laravel scout 的驱动程序。

我在控制器中的代码:

public function search(SearchInArticlesRequest $request)
    {
        $query = $request->s;
        $articles = Article::search($query)
            ->where('article.status', '=', 'published')
            ->where('article.publish_date_time', '<=', Carbon::now()->toDateTimeString())
            ->paginate(20);
        return response()->json([
            'status' => 200,
            'message' => 'articles_were_returned',
            'entire' => [
                'articles' => $articles
            ]
        ]);
}

我的Article 模特:

class Article extends Model
{
    use HasFactory, Searchable;

    protected $table = 'article';
    public function toSearchableArray()
    {
        return $this->only(['id', 'title', 'body' , 'slug']);
    }
}

我的composer.json 文件:

"require": {
        "laravel/scout": "^9.2",
        "meilisearch/meilisearch-php": "^0.18.3",
    },

问题是:当调用我上面提到的控制器方法时,出现以下错误:

Json deserialize error: unknown field filters, expected one of q, offset, limit, attributesToRetrieve, attributesToCrop, cropLength, attributesToHighlight, matches, filter, facetsDistribution at line 1 column 23

【问题讨论】:

  • 显示dd($request-&gt;s)
  • 我做到了。它打印搜索查询。
  • 尝试search(['q' =&gt; $request-&gt;s])
  • 返回如下错误:MeiliSearch\\Endpoints\\Indexes::rawSearch(): Argument #1 ($query) must be of type ?string, array given, called in /var/www/liaratech/vendor/laravel/scout/src/Engines/MeiliSearchEngine.php on line 140

标签: laravel laravel-scout meilisearch


【解决方案1】:

您正在尝试使用目前仅与稳定的 v0.20 兼容的 SDK,并带有 Meil​​iSearch 的 v0.21 RC

【讨论】:

    猜你喜欢
    • 2021-09-01
    • 2021-08-30
    • 2021-08-25
    • 2023-03-05
    • 2014-03-25
    • 2021-10-22
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多