Skip to content

駅名検索で完全一致・前方一致を取得上限より先に優先する - #1721

Merged
TinyKitten merged 1 commit into
devfrom
feature/station-search-ranking
Oct 14, 2026
Merged

TinyKitten merged 1 commit into
devfrom
feature/station-search-ranking

Conversation

@TinyKitten

@TinyKitten TinyKitten commented Oct 14, 2026 •

Copy link
Copy Markdown
Member

概要

「原」などの短い駅名が部分一致する他駅に埋もれ、取得上限から漏れる問題を修正します。名古屋市営地下鉄の原駅が上限10件でも候補に残ります。

変更の種類

  • バグ修正
  • 新機能
  • データの修正・追加
  • リファクタリング
  • ドキュメント
  • CI/CD
  • その他

変更内容

  • 既存の駅名・読み・ローマ字・中国語・韓国語の検索対象について、最も強い一致を使い、完全一致→前方一致→部分一致の順で返します。
  • 同順位は駅グループID・駅名・駅ID順で安定させます。
  • 到達可能性の絞り込み後に取得上限を適用する仕様を維持します。
  • 一致度は候補ごとに一度だけ計算します。全駅数N・候補数Mとして、走査O(N)、ソートO(M log M)、追加メモリO(M)で変更前と同じ計算量です。データベースやクエリプランの変更はありません。
  • AGENTS.mdとアーキテクチャ文書に検索順位の仕様を追記しました。

テスト

  • make fmt が通ること
  • make clippy が通ること(wasm32 ターゲットを含む)
  • make test が通ること

上記コマンドはすべて成功。原駅の優先順位、ひらがな・カタカナ・大文字ローマ字、上限10件で名古屋の原駅が残ること、到達可能性で絞り込んだ後の上限1件が順位を維持することを回帰テストで確認しました。テストはリポジトリの標準CSVを使用しています。

関連Issue

Closes https://github.com/TrainLCD/Issues/issues/1284

スクリーンショット(任意)

なし(APIの検索順位の修正)。

Summary by CodeRabbit

  • 検索機能
    • 駅名検索で、完全一致、前方一致、部分一致の順に候補を表示するようになりました。
    • 同じ一致度の候補は、駅グループ、駅名、駅コードの順に並びます。
    • 到達可能な駅に絞り込んだ後も検索順位が保たれます。
  • ドキュメント
    • 駅名検索の順位付けルールを記載しました。

@github-actions github-actions Bot added feature 要望対応や課題解決 deploy-dev rust labels Oct 14, 2026
@TinyKitten TinyKitten self-assigned this Oct 14, 2026
@coderabbitai

coderabbitai Bot commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Essentials
  • Run ID: 08b11b8c-9e2b-406b-b2b0-23e2e8554688
📥 Commits

Reviewing files that changed from the base of the PR and between 3836d99 and 0f03d72.

📒 Files selected for processing: 4
  • AGENTS.md
  • docs/architecture.md
  • src/index.rs
  • src/repository.rs

Included review availability: This review used your included allowance. 3 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 5 reviews per hour.

📝 Walkthrough

駅名検索を完全一致、前方一致、部分一致の順に順位付けするよう変更しました。同順位は駅グループコード、駅名、駅コードで並べます。原駅の検索、到達可能性による絞り込み、結果上限に関するテストと仕様説明を追加しました。

Changes: 駅名検索の順位付け

Layer / File(s) Summary
一致順位と候補の順序
src/index.rs, docs/architecture.md, AGENTS.md
検索対象ごとの最良の一致度で候補を順位付けし、同順位を駅グループコード、駅名、駅コードで並べます。完全一致、前方一致、部分一致、および正規化された読み・ローマ字検索のテストを追加しました。
到達可能性と結果上限の検証
src/repository.rs
原駅の検索結果を検証します。到達可能性で絞り込んだ後に結果上限を適用した場合も、同じ先頭候補が返ることを検証します。

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~12 minutes

Change: Bug fix · Severity of issue fixed: Low

Merge Risk: ⚪ Minimal · up to 0f03d

Station name search now ranks exact matches first, then prefix, then partial matches, so short names such as 原 are no longer crowded out. No actionable merge risk was identified.

Pre-merge checks: Passed 5
Passed Passed checks: 5 passed
Check name Status Explanation
Title check Passed タイトルは、完全一致・前方一致を取得上限より先に優先するという主要な変更を明確に示しています。
Description check Passed 概要、変更種別、変更内容、テスト結果、関連Issue、任意のスクリーンショット欄を記載しています。主要な仕様変更、計算量、回帰テスト、実行成功したコマンドも具体的です。
Linked Issues check Passed Issue #1284 は名古屋市営地下鉄の原駅を検索結果に表示することを求めています。PR の変更概要では、検索対象の完全一致を部分一致より優先し、上限10件でも駅コード9951618の原駅を結果に含める回帰テストを追加しています。到達可能性の絞り込み後に上限を適用する動作もテストしています。これらの変更は issue #1284 の要件に対応します。
Out of Scope Changes check Passed 変更は検索順位の実装、関連する回帰テスト、AGENTS.md とアーキテクチャ文書の仕様追記に限定されています。これらは issue #1284 の検索結果改善を実装または検証する変更です。無関係な変更は確認できません。なお、ソース差分の直接取得はリモートオブジェクト不足で失敗しましたが、提供された PR 変更概要には対象範囲を示す十分な記載があります。
Docstring Coverage Passed Docstring coverage is 88.89% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 9 functions across 2 files. (2 skipped: 2 u…
✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

うさぎが駅名を検索する
ぴょんと完全一致を見つける
前方一致、部分一致も並べる
原駅の名前をたしかめる
しぼった結果をそっと届ける
月まで届く検索の足音

Comment @coderabbitai help to get the list of available commands.

@TinyKitten
TinyKitten merged commit 008b597 into dev Oct 14, 2026
13 checks passed
@TinyKitten
TinyKitten deleted the feature/station-search-ranking branch October 14, 2026 12:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

deploy-dev feature 要望対応や課題解決 rust

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant