Upgrade to Pro — share decks privately, control downloads, hide ads and more …

「ヒットする」+「近い」を同時にかなえるスマートサジェストの作り方.pdf

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for なかしょ なかしょ
February 28, 2026

 「ヒットする」+「近い」を同時にかなえるスマートサジェストの作り方.pdf

Avatar for なかしょ

なかしょ

February 28, 2026
Tweet

More Decks by なかしょ

Other Decks in Technology

Transcript

  1. ⾃⼰紹介 • なかしょ(中島進也) @nakasho_dev • 所属:NTTテクノクロス株式会社 デジタルトランスフォーメーション事業部 • 業務:MaaS関連のスマートフォンアプリ開発担当 •

    趣味: Ø妻とモンハンデート ØIT関連の勉強会(主にモバイル系 or アジャイル系 or Microsoft系) Ø技術コミュニティの運営スタッフ üeXtreme Programming Japan User Group(XPJUG) 2019〜 üTDD BootCamp Online (TDDBC) 2020〜 ※本資料は私個⼈の意⾒であり、所属企業・部⾨⾒解を代表するものではありません。
  2. テキストスコアと地理スコアの融合 10 0 0.5 1 1.5 2 2.5 3 3.5

    ⿅児島市 松⼭市 広島市 御坊市 テキストスコア 地理スコア
  3. Azure SQL Databaseで実現する⽅法 11 • テキストスコア Ø全⽂検索インデックス • 地理スコア ØGeography型とSTDistance()

    Ø緯度経度の距離を計算しスコア化 CREATE FULLTEXT CATALOG ft_station AS DEFAULT; CREATE FULLTEXT INDEX ON stations_with_fulltext ( station_name LANGUAGE 1041, station_name_k LANGUAGE 1041, station_name_r LANGUAGE 1041 ) lon FLOAT NOT NULL, lat FLOAT NOT NULL, geog AS geography::Point(lat, lon, 4326) PERSISTED, 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 〜 CREATE SPATIAL INDEX IX_stations_with_fulltext_geog ON stations_with_fulltext(geog);
  4. 12 SELECT [KEY] AS station_cd, RANK AS fulltext_score FROM CONTAINSTABLE(

    stations_with_fulltext, (station_name, station_name_k, station_name_r), :ftsQuery ) SELECT s.geog.STDistance(geography::Point(:lat, :lon, 4326)) / 1000.0 AS distance_km 全文検索例 地理空間検索例 private fun ftsQuery(keyword: String): String { val escaped = keyword.replace("\"", "\"\"") return "\"$escaped\" OR \"${escaped}*\"" } 全⽂検索 (形態素解析)を実施