2012-11-21 93 views
0

搜索工具,我有這樣的數據庫表:搜索算法或從數據庫

Column  Type 

source  text    
news_id  int(12)    
heading  text    
body   text   
source_url tinytext 
time   timestamp 
news_pic  char(100) 
location  char(128) 
tags   text 
time_created timestamp 
hits   int(10) 

現在我正在尋找一種算法或工具來執行此表中包含的消息數據的關鍵字進行檢索。關鍵字應該在新聞的標題,正文,標籤和點擊次數中進行搜索,以獲得最佳效果。

+1

有PHP腳本各地網建立連接到數據庫,要求它並獲取結果......如果它是MySQL數據庫,像phpmyadmin這樣的工具可以完成這項工作...... – SmasherHell

回答

3

MySQL已經有你需要的工具內置:全文搜索。我假設你知道如何使用PHP與MySQL進行交互。如果不是,請首先查看。反正...

1)添加全文索引您要搜索的字段:

alter table TABLE_NAME add fulltext(heading); 
alter table TABLE_NAME add fulltext(body); 
alter table TABLE_NAME add fulltext(tags); 

2)使用match ... against語句來進行全文搜索:

select * from TABLE_NAME where match(heading, body, tags, hits) against ('SEARCH_STRING'); 

顯然,在這些示例中,將TABLE_NAME的名稱替換爲SEARCH_STRING的搜索字符串。

我不明白你爲什麼要搜索命中數,因爲它只是一個整數。你可以通過然而,命中數,通過添加order子句來查詢排序

select * from TABLE_NAME where match(heading, body, tags, hits) against ('SEARCH_STRING') order by hits desc; 
+0

我需要的是一種像'Slope One'這樣的算法,它被用來提示用戶一些東西。在我的搜索結果中,我想優先考慮像標題,標籤和新聞點擊次數,這不能用簡單的MySQL查詢來完成 – manish