这是在数据库中做的一件好事。问题是你有错误的数据结构。当您将数据加载到表中时,您需要创建一个词典。词典可能只是字数。或者,它基本上可以是一个倒排索引,其列用于:
这为您提供了项目所需的数据结构。
为了创建这个数据结构,我基本上会一遍又一遍地运行以下查询来填充词典:
insert into lexicon(word, id, pos)
select substring_index(substring_index(description, ' ', pos), ' ', -1), id, pos
from t cross join
(select 1 as pos) const
where length(description) - length(replace(description, ' ', '')) >= pos;
每次,增加pos
子查询中的值。
编辑:
如果您知道描述中的最大单词数,则可以在没有新表的情况下完成此操作。我不会推荐它。但是这样的事情会起作用:
select distinct substring_index(substring_index(description, ' ', pos), ' ', -1) as word
from t cross join
(select 1 as pos union all
select 2 union all
select 3 union all
select 4 union all
select 5 union all
select 6 union all
select 7 union all
select 8 union all
select 9 union all
select 10 union all
) const
where length(description) - length(replace(description, ' ', '')) >= pos
having word like 'p%'