我在PHP / mySQL中创建搜索功能。
我需要能够在多个字段中搜索多个关键字,然后根据匹配的关键字数量以及关键字匹配的位置对结果进行排名(例如,与post_title中出现的关键字相比,它应该排名更高post_content,所有其他条件相同。
然后我需要它回到提升的发布日期,所有其他条件相同。
理想情况下,我可以在mySQL查询中执行此操作。我可以使用哪些方法?
答案 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 by
,having
和order by
条款中使用别名。