我是新來的php和mysql。在我的項目中,我必須開發多個關鍵字多個關鍵字的搜索引擎,並且還需要關鍵字排名和相關性。php搜索引擎關鍵詞排名
例如,如果我有三個單詞嗨,你好,嘿,並希望搜索字段,如主題,消息,參考,textbody。在這種情況下,具有更多關鍵字排名的行將排在第一位,排名最低的行排在最後。任何人都會指導我如何實現這樣的搜索引擎。我的數據庫大約有400萬,並且正在迅速增長。
我是新來的php和mysql。在我的項目中,我必須開發多個關鍵字多個關鍵字的搜索引擎,並且還需要關鍵字排名和相關性。php搜索引擎關鍵詞排名
例如,如果我有三個單詞嗨,你好,嘿,並希望搜索字段,如主題,消息,參考,textbody。在這種情況下,具有更多關鍵字排名的行將排在第一位,排名最低的行排在最後。任何人都會指導我如何實現這樣的搜索引擎。我的數據庫大約有400萬,並且正在迅速增長。
使用全文搜索:
<?PHP
//SET THE SEARCH TERM
$term = "Search Term";
$sql = "SELECT *, MATCH(subject, message,reference,textbody) AGAINST('". $term ."') as score FROM pages WHERE MATCH (subject, message,reference,textbody) AGAINST('". $term ."') ORDER BY score DESC";
$query = mysql_query($sql);
//BUILD A LIST OF THE RESULTS
while($result = mysql_fetch_assoc($query)) {
// your stuff for showing result
}
?>
注意:你應該有FULLTEXT
索引的列主題,郵件,引用的TextBody
可以使用AND或OR運算關鍵詞中,根據您想要搜索返回的內容。
SELECT * FROM table WHERE subject LIKE %$param1% AND another_col LIKE %$param2% .......;
OR
SELECT * FROM table WHERE subject LIKE %$param1% OR another_col LIKE %$param2% .......;
但在這種情況下,我不能將數據庫引擎類型innodb更改爲myism。所以我不能使用全文搜索功能。任何關鍵字排名的替代?我想要比http://r937.com/keyword_relevance.html更好的東西 – Prabhu 2012-01-27 06:45:08
感謝響應。一些查詢:全文工作在innodb數據庫引擎中?而使用匹配......反對我得到的結果有所有的話第一,任何兩個第二和任何一個三階?請你根據你的實踐展示一些最有用的例子。再次感謝。 – Prabhu 2012-01-27 06:18:12
我在查詢數據庫時遇到了錯誤:**使用的表類型不支持FULLTEXT索引** – Prabhu 2012-01-27 06:22:12
正如我在最後注意到的那樣(您應該在列主題,消息,引用,textbody上使用FULLTEXT索引)應用全文本像這樣的查詢索引這些列:ALTER TABLE tablename ADD FULLTEXT(subject,message,reference,textbody) – 2012-01-27 06:26:57