【发布时间】:2014-04-03 16:15:24
【问题描述】:
我正在两个名为 Subject 和 Text 的文本字段中搜索特定关键字。为此,我使用LIKE 语句。我在尝试按出现次数对结果进行排序时遇到问题。
我的搜索查询如下所示:
SELECT * FROM Table WHERE (Text LIKE '%Keyword%' OR Subject LIKE '%Keyword%')
我尝试添加一个 count() 语句并按出现次数对其进行排序,但 count() 语句只是不断返回我的表中的行数。
这里是带有count语句的查询:
SELECT *, COUNT(Text LIKE '%Keyword%') AS cnt FROM News WHERE (Text LIKE '%Keyword%' OR Subject LIKE '%Keyword%') ORDER BY cnt
我正在寻找的是返回每行主题和文本列上的匹配数,然后在每行关键字出现次数最多之后对结果进行排序。
【问题讨论】:
-
您想按关键字在文本中出现的次数或关键字在表格中出现的次数进行排序?
-
你可以使用
substr_count提到的mysql函数here -
我认为全文搜索 (dev.mysql.com/doc/refman/5.0/en/fulltext-search.html) 可能是您的朋友。
-
我尝试了全文搜索的方式,但它似乎可以整理出存在于多行中的常用词。由于我没有很长的文本,并且某些关键字将存在于不止一行中,如果我正确理解全文搜索,它会专注于每一行唯一的单词,因此我决定尝试寻找另一种方法。这是正确的还是我在尝试全文搜索时做错了什么?