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)

现在我正在寻找一种算法或工具来在这个包含新闻数据的表中搜索关键字。关键字应在标题、正文、标签和新闻点击次数中搜索,以获得最佳结果。

4

1 回答 1

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;
于 2012-11-21T23:59:46.733 回答