Skip to content

Conversation

@Ryosuke839
Copy link
Contributor

従来の実装では、例えば 新潟県長岡市東坂之上町3 を検索する際に長岡市には東町も存在するために townPatterns は以下のような順で生成されていた。

'東坂[之ノの]上町(三|3)((丁|町)目?|番(町|丁)|((條|条)|(條|条))|軒|線|[之ノの]町?|地割|(號|号)|[--﹣−‐⁃‑‒–—﹘―⎯⏤ーー─━])',
'東坂[之ノの]上(三|3)((丁|町)目?|番(町|丁)|((條|条)|(條|条))|軒|線|[之ノの]町?|地割|(號|号)|[--﹣−‐⁃‑‒–—﹘―⎯⏤ーー─━])',
'東町',
'東',
'^東坂[之ノの]上町(三|3)',
'^東坂[之ノの]上(三|3)',

しかし、このパターンの順では 東坂之上町3丁目 は問題なくマッチするものの、東坂之上町3 に先にマッチしてしまい誤った結果となってしまっていた。

このような丁目が省略されたパターンでも特定の場合には優先的にマッチさせるようにすることで、この問題を解決する。
具体的には、丁目が省略されても ^${chomeNamePart}${kan2num(chomeNum)}([--﹣−‐⁃‑‒–—﹘―⎯⏤ーー─━]|(?![0-9])|$) にマッチする場合には優先的にマッチさせる。
この変更で townPatterns は以下のような順になる。

 '東坂[之ノの]上町(三|3)((丁|町)目?|番(町|丁)|((條|条)|(條|条))|軒|線|[之ノの]町?|地割|(號|号)|[--﹣−‐⁃‑‒–—﹘―⎯⏤ーー─━])',
+'^東坂[之ノの]上町3([--﹣−‐⁃‑‒–—﹘―⎯⏤ーー─━]|(?![0-9])|$)',
 '東坂[之ノの]上(三|3)((丁|町)目?|番(町|丁)|((條|条)|(條|条))|軒|線|[之ノの]町?|地割|(號|号)|[--﹣−‐⁃‑‒–—﹘―⎯⏤ーー─━])',
+'^東坂[之ノの]上3([--﹣−‐⁃‑‒–—﹘―⎯⏤ーー─━]|(?![0-9])|$)',
 '東町',
 '東',
 '^東坂[之ノの]上町(三|3)',
 '^東坂[之ノの]上(三|3)',

これによって、以下のような入力で正しくマッチするようになる。

  • 新潟県長岡市東坂之上町3
  • 新潟県長岡市東坂之上町3-2-6
  • 新潟県長岡市東坂之上町3メゾンどこそこ

一方、以下のような入力では従来と同じ動作となる。

  • 新潟県長岡市東坂之上町345
  • 新潟県長岡市東坂之上町三

@sanak
Copy link
Member

sanak commented Jul 2, 2025

@Ryosuke839 こちらにつきましてPRを作成頂き、ありがとうございます!
新潟県長岡市東坂之上町3新潟県長岡市東町3 となってしまう問題について確認いたしました。
少し時間がかかるかもしれませんが、PRについて確認を進めていくようにいたしますので、
今しばらくお待ち頂ければと思います。🙇

@sanak sanak self-requested a review July 2, 2025 07:11
@sanak
Copy link
Member

sanak commented Jul 3, 2025

@Ryosuke839 こちら内容について確認いたしました。
テストケースまで含めて対応頂き、誠にありがとうございます!🙇

以下のケースについてもご報告頂き、ありがとうございます。
こちらは、引き続き、対応を検討したいと思いますので、よろしくお願いいたします。🙇

一方、以下のような入力では従来と同じ動作となる。

新潟県長岡市東坂之上町345
新潟県長岡市東坂之上町三

@sanak sanak merged commit 8e5adc3 into geolonia:master Jul 3, 2025
10 checks passed
@Ryosuke839
Copy link
Contributor Author

やったー!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants