【问题标题】:PHP PDO search engine with relevancy具有相关性的 PHP PDO 搜索引擎
【发布时间】:2010-02-10 09:06:24
【问题描述】:

我正在拼命尝试用 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”的得分仍然会更高。然而,主要问题是很多搜索只是返回而没有结果:(

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

【问题讨论】:

    标签: php mysql pdo


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我可以通过 PHP 更改每个查询的最小字数吗?我有 MySQL 5,但很遗憾无法访问配置文件。
    • 不,每次查询是不可能的。仅限每台服务器。
    猜你喜欢
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    • 1970-01-01
    相关资源
    最近更新 更多