Laravelで複数のキーワードを使用して関連検索を実装するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-08 06:43:01
オリジナル
293 人が閲覧しました

How to Implement a Relevant Search in Laravel with Multiple Keywords?

複数のキーワードを使用した Laravel 検索と関連性の並べ替え

はじめに

この記事では、よくある質問について説明しますLaravel 開発における課題: 複数のデータベース列に対して複数のキーワードを組み込んだ検索機能の実装。検索結果は、指定されたキーワードの存在と順序を考慮して、関連性に基づいて並べ替える必要があります。

問題ステートメント

ユーザーが検索エンジンを実装しようとしています。 Laravelでは、検索バーに複数のキーワードを入力すると、関連性の高い順に結果が表示されます。 2 つの特定の列、meta_name と meta_description がクエリされることになります。検索基準は次のとおりです:

  • 両方の列に 3 つのキーワードすべてを含む行が優先されます。
  • 最初の 2 つのキーワードのみを含む行が 2 番目にランク付けされます。
  • 最初のキーワードのみを含む行は 3 番目にランク付けされます。

解決策

この順序付けを実現するために、3 つの別々のデータベース クエリが構築されます。

$all = DB::table('posts')
    ->where('meta_name', 'like', ... /* %word1% %word2% %word3% */)
    ->orWhere('meta_description', 'like', ... /* %word1% %word2% %word3% */);

$twoWords = DB::table('posts')
    ->where('meta_name', 'like', ... /* %word1% %word2% */)
    ->orWhere('meta_description', 'like', ... /* %word1% %word2% */)
    ->whereNotIn('id', $all->pluck('id'));

$oneWord = DB::table('posts')
    ->where('meta_name', 'like', ... /* %word1% */)
    ->orWhere('meta_description', 'like', ... /* %word1% */)
    ->whereNotIn('id', $all->pluck('id'))
    ->whereNotIn('id', $twoWords->pluck('id'));
ログイン後にコピー

結合と順序付け

最後に、3 つの結果セットが結合を使用して結合されます。

$posts = $all->union($twoWords)->union($oneWord)->skip($start)->take($this->rowperpage)->get();
ログイン後にコピー

このプロセスにより、行が指定された基準に一致することが保証されます。

ページネーションと非同期読み込み

ロードオンスクロールのページネーションを実装するには、skip and take メソッドを使用して、ユーザーがスクロールすると、新しい結果が追加されます。表示するデータがなくなった場合は、メッセージを返すことができます。

結論

提供されたソリューションを使用すると、検索機能は複数のキーワードに基づいて関連する結果を取得します。および指定された列での出現順序。結果はロードオンスクロール方式で表示され、シームレスなユーザー エクスペリエンスを提供します。

以上がLaravelで複数のキーワードを使用して関連検索を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!