2012-02-26 50 views
0

我想在我的网站上为我的新闻部分构建更准确的搜索功能。我在内容区使用LIKE,但是,我的问题是,当我在数据库中搜索“三搜索”时,它被写为“三字搜索”,它不会返回任何内容。mySQL LIKE/MATCH返回更准确的搜索结果

我被建议使用MATCH,但我无法使用它返回任何结果。我的查询返回多个表中的各种字段。我的搜索区域有一个以上的搜索框,如果需要,我可以更改它,但我需要它返回所有结果,而不管它们是否具有低分。

这里是我的SQL:

$sql = "SELECT news.id, news.name, news.date, news_categories.name as catName, news.author, statuses.name as statusName, MATCH(news.name, news.summary, news.content, news.keywords) AGAINST ('".$content."') AS score FROM news, news_categories, statuses WHERE news.name LIKE '%".$name."%' AND MATCH(news.name, news.summary, news.content, news.keywords) AGAINST ('".$content."') AND news_categories.id LIKE '%".$category."%' AND news.status_id LIKE '%".$status."%' AND news.status_id=statuses.id AND news.category_id=news_categories.id"; 

任何帮助,将有助于

回答

0

Fulltext在这里没有什么帮助,因为我的要求是总是得到值。对我来说,一个更容易和更有效的方法是对包含搜索词的变量执行str_replace并将所有“”替换为%,以便该词有效地为“%three%word%search%”

0

你必须创建你想搜索领域的FULLTEXT指数。例如:现在

ALTER TABLE news 
    ADD FULLTEXT(name, summary, content, keywords); 

,你可以使用在MATCH() ... AGAINST条款查询这些字段。阅读MySQL documentation全文搜索更多信息。

相关问题