Zing による 4 つのフェーズでの検索結果の生成
ドキュメントをシャード間で分割し、シャードドキュメントを検索し、シャードドキュメントをスコアリングし、スコアをインデックスに結合することで、検索結果を生成します。
Zing は次の 4 つのフェーズで検索結果を生成します。
- 検索可能なドキュメントをインデックスシャード間で分割します。
- シャードドキュメントを検索してフィルタリングします。
- シャードドキュメントをスコアリングします。
- シャードドキュメントスコアをインデックスに結合します。
フェーズ 1:検索可能なドキュメントをインデックスシャード間で分割
検索が実行されると、検索可能なすべてのドキュメントが 10 のインデックスシャードに均等に分割されます。各シャードには、ドキュメントの一意のリストがあります。
検索効率を最大化するために、各インデックスシャードを同時に検索するための 10 個のクエリスレッドが作成されます。
フェーズ 2:シャードドキュメントの検索とフィルター
各クエリスレッドは、シャードドキュメントのリストを検索して、検索条件に一致するドキュメントを特定します。たとえば、「wifi network」を検索すると、「
wifi」と「network」の両方を含む (順序は問わない) すべてのドキュメントが返されます。注:
複数単語検索は、AND 演算子で接続された複数の単一単語検索と同等です。たとえば、[contains] [wifi] [AND] [contains] [network] などとします。
クエリスレッドは、一致する各ドキュメントに数値 (ドキュメント ID) を割り当てて一意に識別します。他のすべてのドキュメントは無視されます。
フェーズ 3:シャードドキュメントのスコアリング
クエリスレッドは、一致する各シャードドキュメントをスコアリングします。
フェーズ 4:シャードドキュメントスコアの結合とソート
ドキュメントスコアが単一のインデックスに結合され、ドキュメントはドキュメントスコアが高いものから低いものへとソートされます。ドキュメントスコアが最も高いドキュメントは、検索クエリに最も関連性があります。