寓話
港の配車係は荷札に目に見えない重さを加えた
河港は毎晩数千隻の船の貨物調整を処理していた。老いた調整員は分厚い貨物札登記簿に頼っていた。どの船がどの埠頭に停泊し、どの荷主に属し、何を運び、目的地はどこか。
問題は「似た貨物を探す」ことから始まる。ある隊商が前回と品質の近い綿布を必要としたが、荷札には「綿布、二級」としか書かれていなかった。配車係は半日探して、同じく「綿布、二級」と書かれた船でも、産地、番手、染め方の違いで手触りが大きく違うことに気づいた。
ある者が新しいラベルを導入した。各商品に説明暗号文を付け、説明暗号文同士で直接類似度を比較できるようにした。ツールが稼働した初日、隊商は大喜びし、配車係もほっと一息ついた。
まもなく新たな面倒がまた来た。隊商は似た綿布を探すだけでなく、制限も加える。「前回のロットに近いが、山東産で、価格は三両以内、最近三日以内に到着したもの。」暗号文は類似度を比べられるが、産地、価格、到着日は比べられない。
配車係はまず「山東産、三両以内、三日で到着」に合う船をすべて拾い出し、その数百隻について一つずつ暗号文の類似度を計算するしかなかった。二つの手順はどちらも遅く、合わせるとさらに遅い。
彼らは新しい调度システムに替えた。各船のタグには通常フィールドと記述暗号文が同時に記録される。クエリ時には、まず通常フィールドで正確なフィルタリングを行い、条件に合う範囲を絞り込む。その後、その範囲内でだけ暗号文の類似度検索を行う。二つの操作は一つのクエリで完了し、別々に走らせる必要はない。
このシステムがあれば、调度員はより複雑な混合クエリを実行できる:「まず昨年十二月の江南の船を筛选し、残りからこの批次に最も似た五条を探す」。フィルターは構造化フィールド上で走り、類似度は密文上で走り、索引と計算はそれぞれ独立し、結果は一步で返される。新システムでは商队が自分の貨域だけを見ることも許される。甲商队は乙商队の私貨を見つけられず、普通の调度も高価な契約を勝手にめくることはできない。類似検索と正確な制限を一緒に置くことで、速度、権限、更新が同時に管理可能となる。
後にシステムは、クエリ速度、ディスク使用量、各荷札の更新頻度を同時に追跡できるまでにアップグレードされた。调度台は同じデータ上で複数のサブセットを分割し、異なる商隊が自分が契約した荷主だけを見られるようにもなった。老调度員は登記簿を引き出しにしまった。本当に使いやすい调度システムは、荷と荷がどれだけ似ているかを知るだけでなく、荷を運べるか、運ぶべきかも知らなければならない。