【发布时间】:2014-07-06 06:52:49
【问题描述】:
stackoverflow 中有十多个关于此主题的问题,我阅读了其中大部分,但仍然无法搜索我的数据库...!!!
这是我表的结构:
$sql = "CREATE TABLE content.htmlLink(
LessonID INT NOT NULL,
LessonTitle VARCHAR(512) NOT NULL COLLATE utf8_general_ci,
LessonContent TEXT NOT NULL COLLATE utf8_general_ci,
storeDate VARCHAR(32) NOT NULL COLLATE utf8_general_ci,
fileName VARCHAR(128) NOT NULL COLLATE utf8_general_ci,
FOREIGN KEY(LessonID) REFERENCES `content`.`html`(id)
);";
和父表:
$sql = "CREATE TABLE content.html(
id INT(11) NOT NULL AUTO_INCREMENT,
title VARCHAR(512) NOT NULL COLLATE utf8_general_ci,
content TEXT NOT NULL COLLATE utf8_general_ci,
storeDate VARCHAR(32) NOT NULL COLLATE utf8_general_ci,
tag1 VARCHAR(32) NOT NULL COLLATE utf8_general_ci,
tag2 VARCHAR(32) COLLATE utf8_general_ci,
tag3 VARCHAR(32) COLLATE utf8_general_ci,
tag4 VARCHAR(32) COLLATE utf8_general_ci,
tag5 VARCHAR(32) COLLATE utf8_general_ci,
PRIMARY KEY(id)
);";
向表中插入信息没有问题。
但是,现在我正在尝试为用户制作一个搜索引擎。
我想搜索 LessonContent 中是否存在用户模式,所以我写了以下几行:
$sql = "SELECT * FROM content.htmllink
WHERE MATCH(LessonTitle,LessonContent) AGAINST('$pattern')";
$query = $conn->query($sql);
//I tried to use bind param
$sql = "SELECT * FROM content.htmllink
WHERE MATCH(LessonTitle,LessonContent) AGAINST('?')";
$prepare = $conn->prepare($sql);
$prepare->execute( array( $pattern ) );
$fetch = $prepare->fetchAll();
//or with IN BOOLEAN MODE arg
$sql = "SELECT * FROM content.htmllink WHERE MATCH(LessonTitle,LessonContent) AGAINST('html', IN BOOLEAN MODE)";
即使我检查了具有特定模式的查询,例如:
$sql = "SELECT * FROM content.htmllink
WHERE MATCH(LessonTitle,LessonContent) AGAINST('html')";
但 $query 仍然是错误的。
你能告诉我我的错误在哪里吗?
提前致谢。
我搜索了这个链接:
http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html
Another site
http://dev.mysql.com/doc/refman/5.5/en/fulltext-query-expansion.html
How to search MySQL database using MATCH AGAINST method that returns only rows that have a particular field value?
How to make MYSQL search for minimum 3 keyword matches?
还有很多其他的......
【问题讨论】:
-
你的表引擎是什么?
-
@samitha 我忘了说对不起,我是
InnoDB... -
Mysql 旧版本(InnoDB) 不支持全文搜索
标签: php mysql sql search match