2010-02-10 47 views
2

我拼命嘗試用PHP,mySQL和PDO創建一個相對簡潔的搜索引擎。我有一個書籍數據庫,我試圖查詢兩個字段的搜索。這是我到目前爲止:具有相關性的PHP 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)); 

$關鍵字是從搜索字段的字符串,所以可能是'某種書'的東西。

我不想過濾掉任何單詞或做任何太花哨的事情,但上面的查詢忽略了很多結果,即使我把它放在布爾模式中。

另外,我在數據庫中有兩本書,'書號1'和'書號2'。如果我搜索'第二冊',那麼它仍然會將'第一冊'分數提高。然而,主要的問題是,很多的搜索只是沒有結果:(

反正能幫助建議什麼,我做錯了什麼?

回答

2

有少於三個字母被忽略所有的話。所以回國, 1 & 2在標題的末尾將被忽略,您可以更改此設置:。因爲這不是從MySQL的角度一句話

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

對ISBN匹配是沒有用的也是

我想你應該發明自己的搜索引擎,如果你想做的很好。

+0

我可以通過PHP更改每個查詢基礎的最小單詞嗎?我有MySQL 5,但不幸的是沒有訪問配置文件。 – Hanpan 2010-02-10 09:38:14

+0

不,每個查詢都是不可能的。僅限每臺服務器。 – 2010-02-10 09:50:12