2012年06月27日
講義087日目
------------------------------1H------------------------------
★職業体験
●マッピングテーブルの作成
・m_stationのline_nameを抽出
SELECT line_name FROM m_station GROUP BY line_name;
・master_ensen_abstractのensen_nameを抽出
SELECT ensen_name FROM master_ensen_abstract GROUP BY ensen_name
------------------------------2H------------------------------
●マッピングテーブルの作成
・whileで回さないと配列にできないことをすっかり忘れていた件
$sql = "SELECT ensen_name FROM master_ensen_abstract GROUP BY ensen_name";
$result =mysql_query($sql);
$row = mysql_fetch_array($result);
while($row = mysql_fetch_array($result)){
$sql_master_ensen_abstractEnsen_name[] =$row;
}
foreach($m_stationLine_name as $k => $v){
foreach($master_ensen_abstractEnsen_name as $k2 => $v2){
if($k == $k2){
$ensen[] = $k;
}else{
$ensen2[] = $k
}
}
}
------------------------------3H------------------------------
●マッピングテーブルの作成
foreach($arr_master_ensen_abstractEnsen_name as $k2 => $v2){
$flg = 0;
foreach($arr_m_stationLine_name as $k => $v){
if($v == $v2){
$arr_ensen[$v] = $v2;
$flg = 1;
}
}
if($flg != 1){
$arr_notmach_ensen[] = $v2;
}
}
------------------------------4H------------------------------
●マッピングテーブルの作成
・similar_text()を使ってみた
foreach($arr_notmach_ensen as $k => $v){
$flg = 0;
foreach($arr_m_stationLine_name as $k2 => $v2){
$c = similar_text($v, $v2, $percent);
if($percent > 70){
echo $v." と ".$v2." は ".intval($percent)."%一致します".$c."文字一致します<br>";
$arr_ensen2[$v2] = $v;
$flg = 1;
}
}
if($flg != 1){
$arr_notmach2_ensen[] = $v;
}
}
print_r($arr_ensen2);
------------------------------5H------------------------------
●マッピングテーブルの作成
・マッピングに必要な沿線の総数→81件
・完全一致させるて抽出の結果→14件
・similar_text()を使用して抽出の結果
80%→36件
75%→44件 ほぼ大体間違えてない(気がする)
70%→56件 ほとんどマッチする、間違った結果もいくつか含まれた
65%→85件 なんだか微妙な結果に 重複が目に余る
60%→完全につかいものにならない結果に→数えるまでもない
------------------------------6H------------------------------
●インポートのプログラムを作成する
・目的:物件情報のcsv内のデータを
沿線マッピングテーブル
住所テーブル
出力フォーマット
を元にして、指定されたフォーマットに書き換えてcsvで出力するプログラムを作成する
・使用するファイル
元となるcsvファイル、日々異なる内容のcsvを得る
出力するcsvのフォーマット
住所一覧のテーブル
●作業手順
・物件情報のcsvを読み込み、内容を出力用に書き換えてcsvで吐き出すロジックを作成する
●注意点
・csvを読み込んだだけでは文字化けしてる可能性がある
ソース内で文字コードを変換する
CentOS上で実施してるならexec関数でnkfコマンドを実行するなどして対処
・住所コードや沿線・駅コードに、実在しないデータが存在した場合は、その物件は処理しない
(その際、エラーメッセージを出したり、ログに書き込むなどすると良い)
・出力ファイルに書き込む際にはflock関数を使って排他ロックする
・可能なら
出力されるレコードの
address_idには、「例)学園東町~」のデータを含む11桁の数字とする
block_numberには、所在地詳細_非表示部のみが入る
難しいなら、所在地名称と所在地詳細_非表示を合わせた文章をblock_numberカラムに入れる
-----------------------------memo------------------------------
0 件のコメント:
コメントを投稿