私は、複雑なクエリ持っデータセットを検索するために使用されるが、Sを見つけるためにH 正確な = { S ∈ S | Q (sが) 真であるが }。各クエリは、平均時間を取るトンリニアサーチの全体的な時間があるので、T ⋅ | S | 。私は単純サブクエリQ_Iにダウンクエリを破り、見つけることができますHを約 = { S ∈ S | ∀ のq J(sが)真です} どこ。各サブクエリq iは計算がはるかに高速であるため、全体的にH Approximateを検索し、Qを使用してH 正確なを検索する方が高速です。
各は多くのq iがあります。異なるQ間のオーバーラップは高いです。検索クエリの大規模なサンプルに基づいて、H_exactを見つけるための平均時間を最小化する、決定木のような一連の固定質問q jを決定する方法を探しています。
これをより具体的にするために、データセットに世界の70億人が含まれていて、複雑なクエリが「Bで始まる都市の5番街とレキシントンの角にある赤い家に住んでいる女性」のようなものであるとします。
明白な解決策は、世界中のすべての人をチェックし、クエリに一致する人を確認することです。そのような人が複数いる場合があります。この方法は時間がかかります。
このクエリを正確に事前計算することができます。その場合、非常に高速になりますが、この質問に対してのみです。ただし、他のクエリは、同じコーナーの青い家に住んでいる女性、同じコーナーに住んでいる男性、同じ質問ですが、Cで始まる都市、または「スウェーデンの王。」
代わりに、複雑な質問を、より簡単で一般的なセットに分解できます。たとえば、上記の質問にはすべて性別役割ベースのクエリがあるため、自分を「女性」と見なす世界中のすべての人々のセットを事前に計算できます。このサブクエリは基本的に時間がかからないため、全体の検索時間は約1/2短縮されます。(他の知識によれば、スウェーデンの「王」は「女性」ではあり得ないと仮定します。ハトシェプストは王であったエジプト人女性でした。)
ただし、「Aで始まる都市の赤い家の8番街に住んでいる人」のように、性別に基づいていないクエリがある場合があります。サブクエリ「赤い家に住んでいる」が一般的であることがわかり、赤い家に住んでいるすべての人々のリストを事前に計算します。
これは私に決定木を与えます。通常の場合、決定木の各分岐には異なる質問が含まれており、決定木の最適な項を選択する方法はよく知られています。ただし、私はすべてのブランチが同じ質問をする必要がある既存のシステムを構築しています。
可能な最終決定セットの例を次に示します:質問1は「人は女性ですか?」、質問2は「人は赤い家に住んでいますか?」、質問3は「人は都市に住んでいますか?」 Aまたは人はBで始まる都市に住んでいますか?」、および質問4は「人は番号が付いた通りに住んでいますか?」です。
クエリが来ると、そのq iが事前に計算された質問q jのいずれかと一致するかどうかがわかります。もしそうなら、私はそれらの答えの交差点を取得し、その交差点サブセットについて質問Qを出します。例えば、質問が「島の赤い家に住んでいる人」である場合、「赤い家に住んでいる人」はすでに事前計算されているので、島に住んでいる人のサブセットを見つけるだけで済みます。
多くのセットを見てコストモデルを取得し、対応するHのサイズを確認することができます。私は、平均サイズが最小限に抑えたいHを約。
アイデアを探すために既存のどのような研究を検討すべきですか?