SQLクエリ結果セットのランキング結果

ラフル

いくつかの条件に従って、SQLクエリ結果セットの結果をランク付けしたいと思います。

  • キーワードの出現
  • 最初にキーワードをタイトルに一致させ、次に会社名を一致させ、次に別の列を一致させます。
  • キーワードが特定の行の3つ以上の列に一致する場合は、その行に優先度/上位ランクを指定する必要があります

FULL TEXT-AGAINSTペアは単一の列に使用できますが、すべての条件を満たすことはできません。何か方法があれば共有してください。

今、私はいくつかの提案された答えの後にこれを使用しています:

    SELECT * FROM (SELECT *, DATE_FORMAT(date, '%d %b, %Y')AS dt, 
                        case when title LIKE '%".$fkeyword."%' then 6 else 0 end +
                        case when description LIKE '%".$fkeyword."%' then 3 else 0 end +
                        case when Channel_Name LIKE '%".$fkeyword."%' then 1 else 0 end +
                        case when Industry_Name LIKE '%".$fkeyword."%' then 1 else 0 end +
                        case when Company_Name LIKE '%".$fkeyword."%' then 1 else 0 end as score FROM Search
WHERE title LIKE '%".$fkeyword."%' or
Channel_Name LIKE '%".$fkeyword."%'  or
Company_Name LIKE '%".$fkeyword."%'  or
description LIKE '%".$fkeyword."%' or
Industry_Name LIKE '%".$fkeyword."%') scored order by score desc
YL

これは非常に大きなテーブルではうまく機能しませんが、出発点になります。

SELECT * FROM (
SELECT *, DATE_FORMAT(date, '%d %b, %Y') AS dt,  
IF(title LIKE '%".$fkeyword."%', 1, 0) + 
IF(Channel_Name LIKE '%".$fkeyword."%', 2, 0) +
IF(Company_Name LIKE '%".$fkeyword."%', 1, 0) +
IF(Industry_Name LIKE '%".$fkeyword."%', 1, 0) + 
...
IF(Platform_Description LIKE '%".$fkeyword."%', 1, 0) as score
FROM Search
) scored_results
WHERE score > 0
ORDER BY score DESC

スコア> 0は、別のしきい値に置き換えることができます。

IF(条件、1、0)の1,0の数値は、負の場合でも、他のスコアに置き換えることができます。例:IF(Title like '%foo%'、10、-5)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

セロリ結果バックエンドMYSQLからのクエリ結果

Djangoクエリセットの結果

特定のクエリに対するSolr結果ランキングの変更

asyncio aiohttp httpリクエストのポーリングをキャンセルし、結果を返します

SQLクエリを使用して結果セットからその逆のエントリを除外する

Elasticsearch:クリックから学ぶ(検索結果のランキング)

LINQ-結果セットのフィルタリングと結果セットの結合

子クラスを持つエンティティクラスへのJPAネイティブクエリ結果セットのマッピング

SQLクエリから2セットの結果を返す

PHPでSQLクエリ結果のセッションを作成する方法

キャッシングドクトリンの結果Symfony2

Djangoでのクエリセット結果のフィルタリングを最適化する

結果セットの Powershell サブストリング

サブクエリの結果セットを満たすドキュメントを返す

CloudQueueClientクラスの「結果セグメント」の意味

SQLクエリの結果(カウント(*)とグループ化)をグラフに表示します

Djangoテンプレートタグ-クエリセットの結果を配置します

2カウントクエリのSQL追加結果

前のクエリの結果セットのクエリ

回答セットのプログラミング-事実の数を数える方法は私のクエリ結果のように見えますか?

PAMクラスタリング-結果を別のデータセットで使用する

サブセレクトのMySQLランキング-グループ別の上位N件の結果

結果のないセロリタスクは結果バックエンドに書き込みます

bashスクリプトのMysqlクエリ結果セット

クエリ結果リストで特定の結果のインデックスを取得しますか?

既存のSQL結果に対してクエリを実行しますか?SQL結果のサブセットから結果を検索する

クエリスキュー結果セットへのWhere句の追加

セロリのバックエンド結果データのクリア

マングース:重複エントリのない一意の結果セットを返します

TOP 一覧

  1. 1

    PyCharmリモートインタープリターはプロジェクトタブにサイトパッケージのコンテンツを表示しません

  2. 2

    <p:fieldset>の凡例に<h1>、<h2>タグを配置するにはどうすればよいですか?

  3. 3

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  4. 4

    パンダは異なる名前の列に追加します

  5. 5

    Railsで宝石のレイアウトを使用するにはどうすればよいですか?

  6. 6

    Java文字列の仕組み

  7. 7

    Chromeウェブアプリのウェブビューの高さの問題

  8. 8

    CSSのみを使用して三角形のアニメーションを作成する方法

  9. 9

    httpListenerコールバックが2回呼び出されます

  10. 10

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  11. 11

    初期化時にextern / static変数のタイプを指定する必要があるのはなぜですか?

  12. 12

    ファイルがgitlfsに正しくアップロードされるかどうかを確認するにはどうすればよいですか?

  13. 13

    Grouping data with datatable with ASP.NET

  14. 14

    Ecto - migrate table column into its own join table (shifting the DATA to the new tables)

  15. 15

    Crashlytics:コンパイラー生成とはどういう意味ですか?

  16. 16

    Python / SciPyのピーク検出アルゴリズム

  17. 17

    PictureBoxで画像のブレンドを無効にする

  18. 18

    ディスパッチ不可能なハンドルが64ビットプラットフォームでptrを使用するのはなぜですか?

  19. 19

    アクティブな管理者で関連するモデルのドロップダウンメニューの問題を解決する方法

  20. 20

    Windows 7では、一部のプログラムは「ビジュアルテーマを無効にする」レジストリ設定を行いませんか?

  21. 21

    文字列内のすべての単語に一致する正規表現

ホットタグ

アーカイブ