Zing による 4 つのフェーズでの検索結果の生成

  • リリースバージョン: Xanadu
  • 更新日 2024年08月01日
  • 所要時間:1分
  • ドキュメントをシャード間で分割し、シャードドキュメントを検索し、シャードドキュメントをスコアリングし、スコアをインデックスに結合することで、検索結果を生成します。

    Zing は次の 4 つのフェーズで検索結果を生成します。
    1. 検索可能なドキュメントをインデックスシャード間で分割します。
    2. シャードドキュメントを検索してフィルタリングします。
    3. シャードドキュメントをスコアリングします。
    4. シャードドキュメントスコアをインデックスに結合します。

    フェーズ 1:検索可能なドキュメントをインデックスシャード間で分割

    検索が実行されると、検索可能なすべてのドキュメントが 10 のインデックスシャードに均等に分割されます。各シャードには、ドキュメントの一意のリストがあります。

    検索効率を最大化するために、各インデックスシャードを同時に検索するための 10 個のクエリスレッドが作成されます。

    図 : 1. ドキュメントのインデックスシャード間での分割
    検索可能なすべてのドキュメントが、シャード 0 からシャード 9 までの 10 個のインデックスシャードに分割されます。

    フェーズ 2:シャードドキュメントの検索とフィルター

    各クエリスレッドは、シャードドキュメントのリストを検索して、検索条件に一致するドキュメントを特定します。たとえば、「wifi network」を検索すると、「wifi」と「network」の両方を含む (順序は問わない) すべてのドキュメントが返されます。
    注:
    複数単語検索は、AND 演算子で接続された複数の単一単語検索と同等です。たとえば、[contains] [wifi] [AND] [contains] [network] などとします。

    クエリスレッドは、一致する各ドキュメントに数値 (ドキュメント ID) を割り当てて一意に識別します。他のすべてのドキュメントは無視されます。

    フェーズ 3:シャードドキュメントのスコアリング

    クエリスレッドは、一致する各シャードドキュメントをスコアリングします。

    図 : 2. クエリスレッドによるシャードドキュメントの検索、フィルタリング、スコアリング
    シャードドキュメントの検索、フィルタリング、スコアリングを行うために、10 個のクエリスレッドが作成されます。

    フェーズ 4:シャードドキュメントスコアの結合とソート

    ドキュメントスコアが単一のインデックスに結合され、ドキュメントはドキュメントスコアが高いものから低いものへとソートされます。ドキュメントスコアが最も高いドキュメントは、検索クエリに最も関連性があります。

    図 : 3. シャードドキュメントスコアの結合とソート
    シャードドキュメントスコアの結合とソート