0

テキストを検索するために、次のクエリを使用しています。

   $query = "SELECT SQL_CALC_FOUND_ROWS *," .
                "MATCH (keywords) AGAINST ('". $searchString ."'IN BOOLEAN MODE ) AS rel1, ".
                "MATCH (title) AGAINST ('". $searchString  ." 'IN BOOLEAN MODE ) AS rel2, ".
                "MATCH (description) AGAINST ('". $searchString  ." 'IN BOOLEAN MODE) AS rel3 ".
                "WHERE MATCH (keywords,title,description) AGAINST ('" .$searchString. "' IN BOOLEAN MODE) " .
                "FROM cron_video " .
                "ORDER BY (rel1*1.5)+(rel2*1.25)+(rel3*1) desc, `cron_status` ASC LIMIT $start, $pagesize";

しかし、以下の検索クエリidは BigInt 型のエラーを出しています。

$query = "SELECT SQL_CALC_FOUND_ROWS *," .
            "MATCH (id) AGAINST ('*". $searchString ."*' IN BOOLEAN MODE ) AS rel1," .          
            "FROM cron_video " . 
            "WHERE MATCH (id) AGAINST ('*" .$searchString. "*' IN BOOLEAN MODE) AS rel2" .
            "ORDER BY (rel1*1.5)+(rel2) desc, `cron_status` ASC LIMIT $start, $pagesize";

私の疑問:
1. BigInt 型の全文検索は可能ですか。

最初のクエリについて:

  1. 関連する係数 (つまり) 1.5 (rel1*1.5)、(rel2*1.25)、rel3 などにどのような値を指定できるかわかりません...この値自体で十分かどうか、または最適な関連係数をどのように決定できるか.
  2. 最初のクエリを最適化する方法はありますか。
4

1 に答える 1

2

ドキュメントから:

Full-text indexes can be used only with MyISAM tables, and can be created only for CHAR, VARCHAR, or TEXT columns.

SELECT * FROM ...フィールドを選択する方法はパフォーマンスに適していないことに注意してください。むしろ、必要なフィールドのみを選択してください。例: SELECT f1, f2, f3 FROM t1. それはずっと良くなるでしょう。

編集

申し訳ありませんが、私のせいです。ブールモードでは、スコアは 0 または 1 です。したがって、コードは正しいです。

于 2013-03-20T09:12:35.263 に答える