编辑:可以看到,我决定使用mySQL的“匹配”。尽管如此,如果有人知道在SELECT语句中做我想做的事情的干净方法,我会感激这些信息(为了知识而知识等等)。
我目前正在为我正在设计的一个网站开发一个本地搜索引擎,因此我用来确定文章相关性的一种方法就是搜索词出现在文章中的次数。因此,我正在寻找一个SQL查询,它允许我提取包含搜索项的行(项目),而不是根据搜索词在每行(项目)中出现的次数对它们排序。
换句话说,我需要这样的东西。
SELECT article_id FROM articles_table WHERE article_content LIKE '%Search Terms%' ORDER BY COUNT(number of times string appears in article_content);因此,如果用户要搜索“帝国”并删除以下三篇文章.
它会把它们分类。
我正在PHP中工作,虽然理想情况下我希望只使用一个SQL查询来执行这个操作,但如果不可能的话,我可以使用PHP解决方案。
所有的帮助都是非常感谢的。
发布于 2011-03-17 17:25:42
您应该考虑使用全文搜索解决方案。要么使用MyISAM表和MySQL本机全文搜索,要么通过外部方式使用斯芬克斯全文搜索或卢塞尼之类的方法。
发布于 2011-03-17 17:30:12
我完全同意其他答案。理论上你可以做这样的事
select (char_length('The Empire The Empire The Empire') -
char_length(replace(lower('The Empire The Empire The Empire'),lower('empire'),''))) / char_length('empire') as occurrences查找字符串中搜索词的频率,但这是一个糟糕的方法。
发布于 2011-03-17 17:25:30
严格来说不是一个答案,但你考虑过像Lucene这样的全文搜索引擎吗?
我是说,我是说,而不是建立你自己的不那么好的东西。
https://stackoverflow.com/questions/5342758
复制相似问题