0

最初に最も多くの結果を持つデータベースからの結果を表示するには、php が必要です。

私は持っている:

foreach($keywords as $key=>$keyword) {
      $where .= "`title` LIKE '%$keyword%'";
      if ($key != ($total_keywords - 1)) {
        $where .= " OR ";
      }
    }


$results = "SELECT * FROM topics WHERE $where";

もし誰かが検索していたら

「火の起こし方」

それは表示されます

  1. 火の起こし方
  2. 発砲する
  3. 方法
  4. 始める

つまり、一致するキーワードが最も多いタイトルが最初になります。

4

1 に答える 1

0

全文検索がオプションではないという同様の問題が以前にありました。これははるかに遅いアプローチですが、私のニーズにはうまくいくようでした. 基本的に、UNION各結果は次のようになりCOUNT、結果の数をカウントするために使用されます。

SELECT Title, COUNT(*) as cnt
FROM (
  SELECT * FROM Topics WHERE Title LIKE '%How%'
  UNION ALL
  SELECT * FROM Topics WHERE Title LIKE '%to%'
  UNION ALL
  SELECT * FROM Topics WHERE Title LIKE '%start%'
  UNION ALL
  SELECT * FROM Topics WHERE Title LIKE '%fire%'
  ) t
GROUP BY Title
ORDER BY 2 DESC

これがフィドルです。

結果は次のとおりです。

TITLE              CNT
How to start fire  4
to fire start      3
How to             2
start              1
于 2013-02-17T17:20:37.543 に答える