0

MySQLデータベースの名前のセットとCSVファイルの文字列のセットの間で非常に単純なテキストマッチングを実行しています。実際の比較の前に、文字列を正規化するためのオプションの配列を指定してpreg_replaceを実行します。重要な置き換えの1つは、不規則な略語を通常の完全な単語に変更することです。でも「株式会社」のような略語はとらえられないようです。および「Inc」、「Corp」。末尾にピリオドがある場合とない場合がある「Corp」。

コードは次のとおりです。

$patterns = array();
$patterns[0] = '/\s+/';
$patterns[1] = '/&/';
$patterns[2] = '/\bAssoc\.{0,1}\b/';
$patterns[3] = '/\bInc(?!\.)\b/';
$patterns[4] = '/\b(L\.?){2}P\.?/';
$patterns[5] = '/\bUniv(\s|\.)+\b/';
$patterns[6] = '/\bCorp\.?/';
$patterns[7] = '/\bAssn\.?/';
$patterns[8] = '/\bUnivesity\b/';
$patterns[9] = '/\bIntl.\b/';

$replacement = array();
$replacement[0] = ' ';
$replacement[1] = 'and';
$replacement[2] = 'Association';
$replacement[3] = 'Inc.';
$replacement[4] = '';
$replacement[5] = 'University';
$replacement[6] = 'Corporation';
$replacement[7] = 'Association';
$replacement[8] = 'University';
$replacement[9] = 'International';

$name = trim(preg_replace($patterns,$replacement,$name));
if(stristr($name,trim(preg_replace($patterns,$replacement,$org->org_name)))) return $org->org_id;
// code here
}

動作していないいくつかの一致は次のとおりです(今後さらに表示されます)。

干し草の山=>針

  • 「AriesInternationalInc。」=>「AriesIntl.Inc。」
  • "フェルプスドッジコーポレーション"=>"フェルプスドッジコーポレーション"
  • "McDermott Incorporated" => "McDermott Inc."

私の知る限り、「株式会社」を捕まえていません。と「Corp.」、少なくとも一貫してではありません。何か助けはありますか?

4

1 に答える 1

2

省略形の後に右を置き、\bその後に次のようにオプションのドットを付けます。

$patterns[2] = '/\bAssoc\b\.?/';
于 2011-04-07T00:34:03.053 に答える