编辑:可以看出,我决定使用 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);
因此,如果用户搜索“The Empire”并调出以下三篇文章...
- 帝国就是帝国。
- The Empire 是棒球中一个位置的名称。
- 帝国帝国帝国。
它会将它们排序为......
- 帝国帝国帝国
- 帝国就是帝国
- The Empire 是棒球中一个位置的名称。
我在 PHP 中工作,虽然理想情况下我希望只使用一个 SQL 查询来执行此操作,但如果这不可能,我愿意使用 PHP 解决方案。
非常感谢任何帮助。
最佳答案
你真的应该考虑 Full Text搜索解决方案。使用 MyISAM 表和 MySQL native full text search ,或者您可以采用外部方式并使用类似 Sphinx fulltext 的内容搜索或Lucene
关于php - mySQL:在多行中搜索一个字符串,并根据字符串出现的频率对结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5342758/