从MySQL查询生成单词列表


generate words list from MySQL query

如何使用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.

尝试以下查询:

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

这不是一件容易的事。首先需要从文本中检索所有单词,要做到这一点,您需要一种单独的索引表(查找表)id,word,没有主键,可能带有"substring_id"字段,表示word在图书id id的标题中的位置。然后你可以这样做:

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

要形成这个表,您需要对插入、更新、删除进行一致性检查(可能是触发器),这将更改lookup表,更新有关文本和id的信息。你能在MySQL查询中拆分/爆炸一个字段吗?作为如何从字符串(也称为按空格分割)中检索单词列表的源代码。