【问题标题】:Most efficient way to run a check against a large number of words对大量单词进行检查的最有效方法
【发布时间】:2015-11-20 08:16:53
【问题描述】:
我正在运行一个教育软件应用程序。在阅读文本部分,我想识别单词列表中的单词,并为这些单词输出一个弹出悬停。单词列表中有大约 30,000 个单词。我可以把它放到一个 MySQL 表中~~或者....有没有更有效的方法?
特别是在效率方面,我的意思是减少我的服务器负载。如果阅读文本有 500 个单词,那么大约需要 400 次 MySQL 调用来检查每个单词(在使用较小的数组消除基本单词之后。)
【问题讨论】:
标签:
php
mysql
database
apache
sqlite
【解决方案1】:
如果您只是想比较用户传递的所有单词,您也可以将所有单词放在一个变量中(不是数组!在一行文本中),然后使用 strpos 找到它们。我认为它会非常快!
$mywords = "word1 word2 word3 word4 ....... word40000";
$userWords = array('word2','other');
foreach($userWords as $word) {
if(strpos($mywords, $word)!==false)
{
// you found a word!
}
}