MySQL、PHP相关搜索结果/优化

MySQL、PHP相关搜索结果/优化,php,mysql,optimization,Php,Mysql,Optimization,我理解像通配符等的结果。我需要知道的是一个很好的方法,以获得最相关的搜索结果在顶部 例如: 我在搜索“前刹车卡莫德尔”或类似的东西 目前,我将字符串按空格分解,并创建一个加法或/WHERE状态,以便查询看起来像这样 SELECT * FROM table WHERE article_text LIKE '%Front%' OR article_text LIKE '%Brake%' OR article_text LIKE '%CarModel%' 由于我的新手搜索技能,这不是很好,因为它会得

我理解像通配符等的结果。我需要知道的是一个很好的方法,以获得最相关的搜索结果在顶部

例如: 我在搜索“前刹车卡莫德尔”或类似的东西

目前,我将字符串按空格分解,并创建一个加法或/WHERE状态,以便查询看起来像这样

SELECT * FROM table WHERE article_text LIKE '%Front%' OR article_text LIKE '%Brake%' OR article_text LIKE '%CarModel%'
由于我的新手搜索技能,这不是很好,因为它会得到搜索词中每个单词的结果。我想做的是得到结果,并对发现最多单词的文章进行排序。如果这有道理的话

建议


编辑:表的类型为InnoDB,由于外键限制,无法更改类型。因此,我无法使用全文索引:(

这可以通过全文索引轻松完成

altertable添加全文索引'ft\u search'('article\u text');
选择*,将(文章文本)与('Front Brake CarModel')匹配作为分数
从桌子上
其中,根据分数说明,将(文章文本)与(‘前制动器CAMODEL’)订单相匹配;

很遗憾,@MarcusAdams可能重复。我的表是InnoDB,无法更改类型。因此我无法使用全文索引。因此,为什么不创建一个新表,只使用搜索文本,并在“真实”表中添加一个键作为MyIASM?这看起来很有希望,但我使用的表似乎不支持全文索引。“使用的表类型不支持全文索引“您没有使用MyISAM引擎。您的表很可能是InnoDB。请使用
ALTER table engine=MyISAM
更改引擎,然后重试。如果您使用的是InnoDB表,则我通常只将全文索引所需的列移到单独的MyISAM表中,而不是将表更改为MyISAM。