从MySQL查询生成单词列表

时间:2014-05-05 13:32:24

标签: php mysql sql words mariadb

如何使用PHP从MySQL / MariaDB表生成单词列表?

我有下表:

id Title
1  A brief history of time
2  philosophy of ecucation
3  introduction to education
4  philosophy and astrophysics
5  astrophysics: astrophysics for dummies

我想要完成的是让MySQL(或PHP)生成一个结果,显示一个单词的使用频率。优选地,每个标题应该仅将单词的计数器增加1(参见id 5)。我的数据库包含大约10000个标题,因此在php中将它们全部提取到一个数组中应该是不可行的。

count word
1     brief
2     philosophy
2(!)  astrophysics <-- this counts only once
1     introduction
etc.

2 个答案:

答案 0 :(得分:0)

尝试以下查询:

SELECT count(*) FROM books WHERE Title LIKE '%astrophysics%';

答案 1 :(得分:0)

这不是一件容易的事。您首先需要检索文本中的所有单词,为此,您需要一种单独的索引表(查找表)id,word没有主键,可能使用&#34; substring_id&#34;字段表示图书ID word标题中id的位置。然后你可以这样做:

SELECT DISTINCT word, count(id) as count from lookup
GROUP BY word
ORDER BY word

要形成此表,您需要在插入,更新,删除时进行一致性检查(可能是触发器),这将更改有关文本和ID的lookup表更新信息。使用此问题Can you split/explode a field in a MySQL query?作为如何从字符串中检索单词列表的来源(也称为空格分割)。