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 表定义:

在此处输入图像描述

数据库中包含两个帖子的列:

在此处输入图像描述

设想:

如果我只搜索“per”,它应该返回第二个帖子。

4

1 回答 1

0

假设您的全文索引定义是正确的(您应该发布您的表定义),MySQL 在标准安装中只索引至少 4 个字母的单词。如果您想在搜索中支持 3 个字母单词,则必须在my.cnfby 设置中更改它:ft_min_word_len

[mysqld]
ft_min_word_len=3

此外,您应该按照MySQL 文档中的说明检查阈值和停用词列表。

编辑:

根据您的表定义,您使用的 InnoDB 表在 MySQL 5.6.4 之前不支持全文索引。是满了吗?而且我看不到您的定义中定义的任何全文索引。

应该有这样的东西:

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

要向表中添加全文索引,请使用以下ALTER TABLE语法:

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