我对 mySQL 和 PHP 有点陌生。我有一个小程序,可以在词源词典中查找文本的单词。-来源在 github 上。它每秒只能查找 1-3 个单词,这是一个真正的限制,尤其是当我尝试分析大于一千个单词的文本时。有没有一种方法可以更好地构建我的查询或数据库,以便我可以加快这个过程?
查找单词的函数:
function lookup($word) {
//connect to database
$query="SELECT parent_lang FROM etym_dict WHERE word=\"$word\" and word_lang=\"eng\""; //making this English-only for now
//debug_print("<p>Query is: $query</p>");
$result=dbquery($query)
or die("Failed to look up words in database.");
$parent_lang=mysqli_fetch_array($result);
$parent_lang=$parent_lang[0];
return $parent_lang;
}
调用该函数的东西:
foreach (array_keys($results) as $word) {
$parent_lang=lookup($word);
if (!empty($parent_lang)) {
$parent_langs[]=array($word,$parent_lang,$results[$word]);
debug_print("$word, ");
} else {
$derivation=lookup_derivation($word);
$has_derivation= (strlen($derivation)>0) ? TRUE : FALSE;
if ($has_derivation) {
$parent_lang=lookup($derivation);
}
if(!empty($parent_lang) && $has_derivation) {
debug_print("<span class=\"blue\">$word ($derivation)</span>, ");
} else if(!empty($parent_lang)) {
$parent_langs[]=array($word,$parent_lang,$results[$word]);
debug_print("<span class=\"blue\">$word</span>, ");
} else {
$not_in_dict[]=$word;
debug_print("<span class=\"red\">$word");
if ($has_derivation) {
debug_print("/$derivation</span>, ");
} else {
debug_print("</span>, ");
}
}
}
}
数据库查询功能:
function dbquery($sql) {
GLOBAL $dbc;
$result=mysqli_query($dbc,$sql);
return $result;
}
数据库连接功能:
function dbconnect() {
$dbc=mysqli_connect(
... // redacted
) or die ('Error connecting to database.');
return $dbc;
}