mysql FULLTEXT查询只是行不通

时间:2011-03-08 15:46:37

标签: php mysql

拔出我的头发,试图弄清楚这里有什么问题。

创建表格查询:

CREATE TABLE search_data (
    id INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    address VARCHAR( 250 ) NOT NULL ,
    title VARCHAR( 250 ) NOT NULL ,
    time_stamp TIMESTAMP NOT NULL,
    FULLTEXT (title) 
) ENGINE = MYISAM

搜索代码的查询:

$query = " SELECT * FROM search_data WHERE MATCH (title) AGAINST ('feedback')" ;
$result = mysql_query($query, $connection);
confirm_query($result) ;

while ( $row = mysql_fetch_array($result) )
{
   echo "FOUND DATA- " . $row['address'] ; 
}

表的内容:http://imgur.com/tXRNs.jpg 由于某种原因(无输出),这不起作用。我只是想不通为什么。请帮忙。

编辑: confirm_query:

function confirm_query($result_set) 
{
    if (!$result_set) 
    {
       die("Database query failed: " . mysql_error());
    }
}

Edit2:手动运行sql查询:我得到“MySQL返回一个空结果集(即零行)。” 我检查了区分大小写,但得到了相同的东西

2 个答案:

答案 0 :(得分:2)

前几天我在Mysql的最小搜索长度上被挂起(默认为4个字符...... 4以下的任何内容都没有返回结果)。有关详细信息,请参阅我的帖子:
Why doesnt this complex MySQL query work?

更新: 我发现添加搜索修饰符“IN BOOLEAN MODE”允许查询通过我的测试返回结果:

SELECT * FROM search_data WHERE MATCH (title) AGAINST ('feedback' IN BOOLEAN MODE);

答案 1 :(得分:0)

你的桌子有多大? FULLTEXT指数在样本量较小时效果不佳。

ETA:

添加几千个随机行。确保它们完全不同。 FULLTEXT不会接收超过50%条目的单词。然后重新运行您的查询。我敢打赌它会起作用。