根据关键字外观对搜索结果进行排名

时间:2011-10-03 15:40:31

标签: php mysql search

我在PHP / mySQL中创建搜索功能。

我需要能够在多个字段中搜索多个关键字,然后根据匹配的关键字数量以及关键字匹配的位置对结果进行排名(例如,与post_title中出现的关键字相比,它应该排名更高post_content,所有其他条件相同。

然后我需要它回到提升的发布日期,所有其他条件相同。

理想情况下,我可以在mySQL查询中执行此操作。我可以使用哪些方法?

1 个答案:

答案 0 :(得分:1)

如果您使用MyISAM,则可以在文本字段中设置全文索引。

请参阅此问题以获取指导:Keyword search using PHP MySql?

现在您可以执行以下查询:

SELECT 
  MATCH(`data`) AGAINST('word1 word2 word3') AS relevance  
  , field1
  , field2
FROM table1
WHERE MATCH(`data`) AGAINST('word1 word2 word3')
ORDER BY relevance DESC

您可以在您的选择中重复MATCH AGAINST条款,它会为您提供相关号码 您需要在where子句中重申它。但幸运的是,您可以在group byhavingorder by条款中使用别名。