経路探索APIの「最大回答数」と「最大探索数」って? #駅すぱあとWebサービス
こんにちは。 今回は駅すぱあとWebサービスでちょっと分かりづらい仕様、経路探索APIの最大回答数(=answerCountパラメータ)と最大探索数(=searchCountパラメータ)の違いについて解説しようと思います。
最大回答数とは?
レスポンスの/ResultSet/Course
の数です。例えば以下のように、answerCount=2
と指定すると、/ResultSet/Course
は2個返ります。
curl "https://api.ekispert.jp/v1/xml/search/course/extreme?key=xxx&viaList=新宿:渋谷&searchType=plain&answerCount=2"
<ResultSet apiVersion="1.27.0.0" engineVersion="201804_01a"> <Course searchType="plain" dataType="plain"> : </Course> <Course searchType="plain" dataType="plain"> : </Course> </ResultSet>
最大探索数とは?
ドキュメントでは最大探索数
と一言添えられているだけですが、噛み砕いて説明すると、
例えばsearchCount=7
、answerCount=5
、sort=price
という条件で経路探索APIを叩いたとしましょう。そうすると、API内部では以下のような動きをします。
- 指定された最大探索数(searchCount)の数だけ経路探索結果を取得(この時並び順は駅すぱあと順となる)
ABCDEFG
- 指定されたソート(sort)に並べ替え
CDAEGFA
- 指定された最大回答数(answerCount)で切る
CDAEG
これを見てもらうとわかる通り、駅すぱあとは、基本的に「駅すぱあと順」と呼ばれる順序でしか経路を持ってこれません。料金、乗換回数順などの順序入れ替えは、エンジンから経路を受け取ってから行われます。
つまり、最大探索数の値を大きくすればするほど、多くの選択肢からソートができると言うことになります。
ただし、最大探索数や最大回答数を多くすると、少なからずレスポンス速度に影響が出ますので、そこだけはご注意くださいね。