PHP PDO搜索引擎具有相关性

时间:2010-02-10 09:06:24

标签: 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 LIMIT 0,25");
$sth->execute(array(':term'=>'+'.$keywords));

$ keywords是搜索字段中的字符串,因此可能类似于“某种书”。

我不想过滤任何单词或做任何太花哨的事情,但上面的查询忽略了很多结果,即使我把它放在BOOLEAN MODE中。

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

无论如何可以帮助建议我在这里做错了吗?

1 个答案:

答案 0 :(得分:2)

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

http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html

与ISBN匹配是没有用的,因为这不是MySQL的观点。

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