首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mySQL:搜索多行以查找字符串,并根据字符串的频率排序结果

mySQL:搜索多行以查找字符串,并根据字符串的频率排序结果
EN

Stack Overflow用户
提问于 2011-03-17 17:22:05
回答 3查看 935关注 0票数 1

编辑:可以看到,我决定使用mySQL的“匹配”。尽管如此,如果有人知道在SELECT语句中做我想做的事情的干净方法,我会感激这些信息(为了知识而知识等等)。

我目前正在为我正在设计的一个网站开发一个本地搜索引擎,因此我用来确定文章相关性的一种方法就是搜索词出现在文章中的次数。因此,我正在寻找一个SQL查询,它允许我提取包含搜索项的行(项目),而不是根据搜索词在每行(项目)中出现的次数对它们排序。

换句话说,我需要这样的东西。

代码语言:javascript
复制
SELECT article_id FROM articles_table WHERE article_content LIKE '%Search Terms%' ORDER BY COUNT(number of times string appears in article_content);

因此,如果用户要搜索“帝国”并删除以下三篇文章.

  1. 帝国就是帝国。
  2. 帝国是棒球中一个位置的名字。
  3. 帝国。

它会把它们分类。

  1. 帝国帝国帝国
  2. 帝国就是帝国
  3. 帝国是棒球中一个位置的名字。

我正在PHP中工作,虽然理想情况下我希望只使用一个SQL查询来执行这个操作,但如果不可能的话,我可以使用PHP解决方案。

所有的帮助都是非常感谢的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-17 17:25:42

您应该考虑使用全文搜索解决方案。要么使用MyISAM表和MySQL本机全文搜索,要么通过外部方式使用斯芬克斯全文搜索或卢塞尼之类的方法。

票数 4
EN

Stack Overflow用户

发布于 2011-03-17 17:30:12

我完全同意其他答案。理论上你可以做这样的事

代码语言:javascript
复制
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

查找字符串中搜索词的频率,但这是一个糟糕的方法。

票数 3
EN

Stack Overflow用户

发布于 2011-03-17 17:25:30

严格来说不是一个答案,但你考虑过像Lucene这样的全文搜索引擎吗?

我是说,我是说,而不是建立你自己的不那么好的东西。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5342758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档