2017-10-11 4 views
3

参照:その可能ベスパ - プロトン:カスタムバケット・クエリ

ID方式

Format: id:<namespace>:<document-type>:<key/value-pairs>:<user-specified> 

http://docs.vespa.ai/documentation/content/buckets.html 
http://docs.vespa.ai/documentation/content/idealstate.html 

32 LSB文書ID形式で(N/gの選択を使用してユーザー定義バケットロジックにデータを構造化します)。

ただし、事前に決められた決定に基づいてクエリを特定のバケット範囲にルーティングする方法については、クエリロジックがあまり明確ではありません。

たとえば、範囲を圧縮するn(数値)を定義できる場合は、データを時間範囲(開始時間/終了時間)に分割することができます。そのようにタグ付けされたすべてのドキュメントは、同じバケットになります(設定されたドキュメント/サイズの数に応じて分割されます)。

ただし、このような方法で索引付けされたデータに対して検索クエリを作成するにはどうすればよいですか? 特定のバケットまたはバケットの範囲を選択するようにプロセッサに指示することは可能です(分散アルゴリズムによってバケットが移動した可能性があります)。

答えて

4

streaming.groupnameクエリプロパティを指定すると、クエリ内で1つのバケットを選択できます。あなたが複数のバケットをしたい場合は

&streaming.groupname=[group] 

を追加することによって、または

query.properties().set("streaming.groupname","[group]"). 

によってサーチャーでhttpリクエストで

のどちらか、どの文書選択表現を受け入れ、パラメータの代わりにstreaming.selectionを使用:http://docs.vespa.ai/documentation/reference/document-select-language.html

たとえば、2つのバケットを指定するには、セット(HTTP要求またはサーチャー中)

id.group=="[group1]" and id.group=="[group2]" 

への各クエリが1つまたは少数のバケットを検索する必要がある場合、ストリーミング検索にのみ使用されるべきであることhttp://docs.vespa.ai/documentation/streaming-search.html

注を参照してください。その特殊なケースでは安価な逆索引の作成を避けます(唯一の)。

+0

をルーティングクエリを制御することはできませんインデックスであるデフォルト・モードのために、モード=ストリーミングで構成されているタイプを文書化するために適用されますストリーミングモードは非常にコストがかかり、ステミングをサポートしません。 は、キーバリューのペアを使用する非常に大きなデータセット(100億以上のドキュメント)のインデックスを作成する際に、カスタムバケットの基準を設定することをお勧めします。 しかし、私はストリーミング検索を使用するように強制し、私が操作したいデータのサイズは高コストでうまくいかないでしょう。 カスタムバケット(ドキュメントをまとめて配置)を持つことができるようにインデックスを作成し、最適なパフォーマンスと最小サイズを導き出す提案はありますか? – shwetank

+0

より具体的には、私はキー値のコロケーションスキームは行っていない場合、どのように私は潜在的に自分自身をインデックス作成中に定義できる網羅的なセットをターゲットにクエリ/検索を最適化するのですか? 時間範囲内で購入されたすべての動画広告(広告サーバー上で既知の成長するセット)です。 このデータを開いたバケッティングスキームに取り入れると、0の視界遅延を念頭に置いて最低限のコストをかけた検索となります。 – shwetank

+0

ストリーミング検索では逆インデックスが回避されます。これは、各クエリで合計データの小さなチャンクのみを検索し、それらのチャンクを事前に決定することができることを意味します(通常は個人データ用に使用されます)。 – Jon

関連する問題