我有一个不断增长的关键字数据库。我需要解析传入的文本输入(文章、提要等)并查找数据库中的哪些关键字出现在文本中。关键字的数据库比文本大得多。
由于数据库不断增长(用户添加了越来越多的关键字来关注),我认为最好的选择是将文本输入分解为单词并将其与数据库进行比较。我的主要困境是实现这个比较方案(这个项目将使用 PHP 和 MySQL)。
最简单的实现是针对关键字表创建一个简单的 SELECT 查询,其中有一个巨大的 IN 子句列出所有找到的关键字。
SELECT user_id,keyword FROM keywords WHERE keyword IN ('keyword1','keyword2',...,'keywordN');
另一种方法是在内存中创建一个哈希表(使用 memcache 之类的东西)并以相同的方式对其进行检查。
有没有人对这种搜索有任何经验,并对如何更好地实现这一点有任何建议?我还没有尝试过任何这些方法,我现在只是在收集想法。