1

問題:

SQL検索クエリで全文インデックスを使用しようとしていますが、何らかの理由でデータベースからの投稿が返されません。

PHP / SQLコード:

$string = mysql_real_escape_string($_POST['searchtext']);

$query = "SELECT
            EID,
            CONCAT (u1.Firstname, ' ', u1.Lastname) AS Examiner,
            Supervisor,
            ExaminationDate,
            FirstAuthor,
            SecondAuthor,
            Level,
            Credits,
            Completed
        FROM betyg_essays grade
            INNER JOIN betyg_users u1 ON grade.Examiner = u1.UID
        WHERE
            MATCH (Supervisor, FirstAuthor, SecondAuthor) AGAINST ('$string')
        ORDER BY
            EID ASC
";

MySQLテーブルの定義:

ここに画像の説明を入力してください

2つの投稿があるデータベースの列:

ここに画像の説明を入力してください

シナリオ:

「per」のみを検索すると、2番目の投稿が返されます。

4

1 に答える 1

0

フルテキスト インデックスの定義が正しいと仮定すると (テーブル定義を投稿する必要があります)、MySQL は標準インストールで少なくとも 4 文字の単語のみをインデックスに登録します。my.cnf検索で 3 文字の単語をサポートする場合は、 by 設定でそれを変更する必要がありft_min_word_lenます。

[mysqld]
ft_min_word_len=3

また、MySQL のドキュメントで説明されているように、しきい値とストップワード リストを確認する必要があります。

編集:

テーブル定義によると、MySQL 5.6.4 までフルテキスト インデックスをサポートしない InnoDB テーブルを使用しています。それは満たされていますか?また、定義で定義されたフルテキスト インデックスが表示されません。

次のようなものがあるはずです:

... FULLTEXT KEY `keywords` (`keywords`) ...

テーブルにフルテキスト インデックスを追加するには、次のALTER TABLE構文を使用します。

ALTER TABLE betyg_essays ADD FULLTEXT(FIELD1, FIELD2, ...);
于 2012-06-21T09:58:26.257 に答える