今回は、郵便番号データ内の(その他)
を含むレコードの処理について紹介します。
データは、記載がない限り2021-05-31のデータを用いています。
ケンオールでどのようにパースされているかは、こちらのデモから試してみてください。
前回の記事はこちらです。
(その他)の処理
ケンオールでは、括弧書きで小字が含まれている郵便番号レコードについて、原則として小字なしのレコードを出力しています。
例えば、1030028
は、郵便番号データには以下のように記載されています。
1030028: 東京都 中央区 八重洲(1丁目)
これは、ケンオールでは以下のように2つのレコードとして出力されます。
1030028: 東京都 中央区 八重洲 1030028: 東京都 中央区 八重洲 1丁目
ケンオールでは、郵便番号データのパースを可能な限り高精度に行っていますが、複雑な番地情報など、解析が困難な割にあまり活用頻度が高くない情報は削除しています。そのため、検索時に意図しない小字・丁目が表示されてしまう可能性があります。そのような場合に小字を含まないレコードを出力できる(フォールバックできる)ように、小字を含まないレコードも出力するようにしています。
しかし、以下のように郵便番号レコード自体に(その他)というレコードが含まれている場合、フォールバック先を間違えないように、小字なしのレコードは出力しないようにする必要があります。
1690052: 東京都 新宿区 戸山(3丁目18・21番) 1620052: 東京都 新宿区 戸山(その他)
(その他)
を含むレコードは564件あります。
(その他)
を複数含む町は存在しません。
(その他)
を含む町のうち、(その他)
以外のレコードを含む町は545件あります。これらについては、先述の方針通り、小字なしのレコードを出力しないようにします。
しかし、(その他)
しか含まない町が19件存在します。これらの町については、小字なしのレコードを出力する必要があります。
よって、以下の方針でパースをしていくことになります。
- 括弧つきの町域が存在する場合(レコード1)、まず括弧なしの部分を仮の町名して取りだす
- レコード1より後に連続するレコードのうち、町名が同じもので括弧つきのものを検索。後に存在するレコードがない場合はそのレコードしか存在しないため処理を行わない→最終的に小字なしのフォールバックレコードを出力する
- その中に
(その他)
があった場合、その同一町域においては小字なしのフォールバックレコードを出力しない
パース後の住所は以下のようになります。
1690052: 東京都 新宿区 戸山 3丁目 1620052: 東京都 新宿区 戸山
ケンオールについて
「かゆいところにケンオール」
ケンオールは、郵便番号住所検索APIをはじめとした、システム開発を加速する高品質で安全なAPIサービスです。
(Shodoで執筆されました)