0

Microsoft が azure 検索の例で使用しているのと同じ状況を考えてみましょう - ホテル検索システムですが、azure 検索は開いているホテルのフィルターを提供する必要があります。

営業時間に関する情報を保存する方法 (ソース モデルには、毎日 2 つの間隔 (昼食前/後) が含まれています) をフィルターに使用するためのアイデアはありますか?

私が見つけた最も簡単な解決策 (間違いなく最も美しいものではありません) は、間隔と開始および終了タイムスタンプの両方 (入力された時間のみ) のフィールドを毎日作成することでした。次に、適切な日の値と現在の時刻をフィルター パラメーターで使用します。ソリューション全体で、7 x 2 x 2 フィールドを作成する必要があります。

おそらく Azure Search Engine の既定の機能を使用して、より良いソリューションを持っている人はいますか?

4

1 に答える 1

3

そのアプローチはうまくいくでしょう。28 の代わりに 1 つのフィールドを使用する別のアプローチを次に示します。すべての開店時間と閉店時間が 1 時間の境界にあるとします (もちろん、同じアプローチが 30 分または 15 分の境界で機能します)。ホテルごとに、その時点でホテルが開いているかどうかを表すすべての間隔の用語を生成します: "Mon12AMClosed"、"Mon1AMClosed"、...、"Mon6AMOpened"、...、"Tue12AMClosed"、.....これらすべての用語を文字列コレクション フィールドにインデックス付けします。クエリ時に、現在の時刻を適切な間隔 (「Wed12PMOpen」などで、水曜日の午後 12 時から午後 1 時の間隔で開いているホテルを調べる) にマップし、次のようなフィルター式を使用します。

$filter = interval/any(t: t eq "Wed12PMOpen")

HTH、ユージーン

于 2015-09-02T18:35:40.920 に答える