function logEnd(&$oDB, $hLog, $iNumResults) { $aEndTime = explode('.', microtime(true)); if (!$aEndTime[1]) { $aEndTime[1] = '0'; } $sEndTime = date('Y-m-d H:i:s', $aEndTime[0]) . '.' . $aEndTime[1]; if (CONST_Log_DB) { $sSQL = 'update query_log set endtime = ' . getDBQuoted($sEndTime) . ', results = ' . $iNumResults; $sSQL .= ' where starttime = ' . getDBQuoted($hLog[0]); $sSQL .= ' and ipaddress = ' . getDBQuoted($hLog[1]); $sSQL .= ' and query = ' . getDBQuoted($hLog[3]); $oDB->query($sSQL); $sSQL = 'update new_query_log set endtime = ' . getDBQuoted($sEndTime) . ', results = ' . $iNumResults; $sSQL .= ' where starttime = ' . getDBQuoted($hLog[0]); $sSQL .= ' and ipaddress = ' . getDBQuoted($hLog[1]); $sSQL .= ' and query = ' . getDBQuoted($hLog[2]); $oDB->query($sSQL); } if (CONST_Log_File && CONST_Log_File_SearchLog != '') { $aStartTime = explode('.', $hLog[0]); file_put_contents(CONST_Log_File_SearchLog, $aStartTime[0] . ',' . $aStartTime[1] . ',' . php_uname('n') . ',' . '"' . addslashes(isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '') . '",' . '"' . addslashes($hLog[1]) . '",' . '"' . addslashes($hLog[3]) . '",' . '"' . addslashes($_SERVER['HTTP_USER_AGENT']) . '",' . '"' . addslashes(isset($_GET['format']) ? $_GET['format'] : '') . '",' . $iNumResults . "\n", FILE_APPEND); } }
function getWordSuggestions(&$oDB, $sWord) { $sWordQuoted = getDBQuoted(trim($sWord)); $sSQL = "select *,levenshtein({$sWordQuoted},word) from test_token "; $sSQL .= "where (metaphone = dmetaphone({$sWordQuoted}) or metaphonealt = dmetaphone({$sWordQuoted}) or "; $sSQL .= "metaphone = dmetaphone_alt({$sWordQuoted}) or metaphonealt = dmetaphone_alt({$sWordQuoted})) "; $sSQL .= "and len between length({$sWordQuoted})-2 and length({$sWordQuoted})+2 "; $sSQL .= "and levenshtein({$sWordQuoted},word) < 3 "; $sSQL .= "order by levenshtein({$sWordQuoted},word) asc, abs(len - length({$sWordQuoted})) asc limit 20"; $aSimilar = $oDB->getAll($sSQL); return $aSimilar; }
} else { $aValidTokens[$aToken['word_token']] = array($aToken); } if ($aToken['word_token'][0] == ' ' && !$aToken['class'] && !$aToken['country_code']) { $aPossibleMainWordIDs[$aToken['word_id']] = 1; } } if (CONST_Debug) { var_Dump($aPhrases, $aValidTokens); } $aSuggestion = array(); $bSuggestion = false; if (CONST_Suggestions_Enabled) { foreach ($aPhrases as $iPhrase => $aPhrase) { if (!isset($aValidTokens[' ' . $aPhrase['wordsets'][0][0]])) { $sQuotedPhrase = getDBQuoted(' ' . $aPhrase['wordsets'][0][0]); $aSuggestionWords = getWordSuggestions($oDB, $aPhrase['wordsets'][0][0]); $aRow = $aSuggestionWords[0]; if ($aRow && $aRow['word']) { $aSuggestion[] = $aRow['word']; $bSuggestion = true; } else { $aSuggestion[] = $aPhrase['string']; } } else { $aSuggestion[] = $aPhrase['string']; } } } if ($bSuggestion) { $sSuggestion = join(', ', $aSuggestion);