Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有相关性的PHP PDO搜索引擎_Php_Mysql_Pdo - Fatal编程技术网

具有相关性的PHP PDO搜索引擎

具有相关性的PHP PDO搜索引擎,php,mysql,pdo,Php,Mysql,Pdo,我正在拼命尝试用PHP、mySQL和PDO创建一个相对简洁的搜索引擎。我有一个图书数据库,我正在尝试对其中两个字段进行查询搜索。以下是我到目前为止的情况: "SELECT id, title, author, isbn, MATCH(title, isbn) AGAINST (:term) AS score FROM %sbooks WHERE MATCH(title, isbn) AGAINST (:term) AND is_active = 'y' ORDER BY score DESC L

我正在拼命尝试用PHP、mySQL和PDO创建一个相对简洁的搜索引擎。我有一个图书数据库,我正在尝试对其中两个字段进行查询搜索。以下是我到目前为止的情况:

"SELECT id, title, author, isbn, MATCH(title, isbn) AGAINST (:term) AS score FROM %sbooks WHERE MATCH(title, isbn) AGAINST (:term) AND is_active = 'y' ORDER BY score DESC LIMIT 0,25");
$sth->execute(array(':term'=>'+'.$keywords));
$keywords是搜索字段中的字符串,因此可能类似于“某本书”

我不想过滤掉任何单词或做任何太花哨的事情,但上面的查询忽略了很多结果,即使我将其置于布尔模式

另外,我在数据库中有两本书,“书号1”和“书号2”。如果我搜索“书号2”,那么它的分数仍然会比“书号1”高。然而,主要问题是,许多搜索只是返回,没有结果:(


是否可以帮助提示我的错误?

所有少于三个字母的单词都将被忽略。因此,标题末尾的1和2将被忽略。您可以更改此设置:

与ISBN匹配也没有用,因为从MySQL的角度来看,这不是一个词


如果你想做得更好,我认为你应该发明自己的搜索引擎。

我可以通过PHP更改每个查询的最小单词数吗?我有MySQL 5,但不幸的是,我没有访问配置文件的权限。不,每个查询是不可能的。仅限每个服务器。