- $sSQL = "select word_token,count(*) from word where substr(word_token, 1, 1) = ' '";
- $sSQL .= " and class is null and type is null and country_code is null";
- $sSQL .= " group by word_token having count(*) > 1 order by word_token";
- $aDuplicateTokens = chksql($oDB->getAll($sSQL));
- foreach ($aDuplicateTokens as $aToken) {
- if (trim($aToken['word_token']) == '' || trim($aToken['word_token']) == '-') continue;
- echo "Deduping ".$aToken['word_token']."\n";
- $sSQL = "select word_id,";
- $sSQL .= " (select count(*) from search_name where nameaddress_vector @> ARRAY[word_id]) as num";
- $sSQL .= " from word where word_token = '".$aToken['word_token'];
- $sSQL .= "' and class is null and type is null and country_code is null order by num desc";
- $aTokenSet = chksql($oDB->getAll($sSQL));
-
- $aKeep = array_shift($aTokenSet);
- $iKeepID = $aKeep['word_id'];
-
- foreach ($aTokenSet as $aRemove) {
- $sSQL = "update search_name set";
- $sSQL .= " name_vector = array_replace(name_vector,".$aRemove['word_id'].",".$iKeepID."),";
- $sSQL .= " nameaddress_vector = array_replace(nameaddress_vector,".$aRemove['word_id'].",".$iKeepID.")";
- $sSQL .= " where name_vector @> ARRAY[".$aRemove['word_id']."]";
- chksql($oDB->query($sSQL));
-
- $sSQL = "update search_name set";
- $sSQL .= " nameaddress_vector = array_replace(nameaddress_vector,".$aRemove['word_id'].",".$iKeepID.")";
- $sSQL .= " where nameaddress_vector @> ARRAY[".$aRemove['word_id']."]";
- chksql($oDB->query($sSQL));
-
- $sSQL = "update location_area_country set";
- $sSQL .= " keywords = array_replace(keywords,".$aRemove['word_id'].",".$iKeepID.")";
- $sSQL .= " where keywords @> ARRAY[".$aRemove['word_id']."]";
- chksql($oDB->query($sSQL));
-
- foreach ($aPartitions as $sPartition) {
- $sSQL = "update search_name_".$sPartition." set";
- $sSQL .= " name_vector = array_replace(name_vector,".$aRemove['word_id'].",".$iKeepID.")";
- $sSQL .= " where name_vector @> ARRAY[".$aRemove['word_id']."]";
- chksql($oDB->query($sSQL));
-
- $sSQL = "update location_area_country set";
- $sSQL .= " keywords = array_replace(keywords,".$aRemove['word_id'].",".$iKeepID.")";
- $sSQL .= " where keywords @> ARRAY[".$aRemove['word_id']."]";
- chksql($oDB->query($sSQL));
- }