中執行查詢lazily在當前的項目中,我們需要找到幾乎完全連通的圖中最便宜的路徑,其中每個頂點對可以包含大量的邊。在Orient-DB
我們開發a plugin含有功能
- 特殊遍歷該圖表,以降低的類似路徑reoccurences而
TRAVERSE
執行。我們將其稱爲search()
- ,用於從這些遍歷的結果中特別有效地提取期望的信息。我們將其稱爲
extract()
- 用於根據目標參數提取最好的
N
記錄而無昂貴的ORDER BY
。我們將其稱爲best()
但是結果查詢在完整數據上仍然不能令人滿意。
因此,我們決定修改search()
函數,以便它可以首先觀察最佳邊緣,並通過使用當前狀態best()
函數修剪導致肯定不期望的結果的路徑。
整體解決方案實際上是一個靈活地實現Branch and Bound method
結果查詢(省略extract()
步驟)應該像
SELECT best(path, <limit>) FROM (
TRAVERSE search(<params>) FROM #<starting_point>
WHILE <conditions on intermediate vertixes>
) WHERE <conditions on result elements>
這種形式是非常需要的,所以我們可以爲我們的當前任務適應WHILE
和WHERE
下條件。 path
字段由search()
生成,其中包含best()
的所有信息以繼續。
麻煩的是,best()
功能被執行後嚴格search()
功能,所以search()
不能根據已經由best()
評價結果修剪非最佳分支。
所以現在的問題是:
有沒有辦法從TRAVERSE
一步一步SELECT
的方式,舊的路徑是TRAVERSE
d與search()
稍早通過的路徑與SELECT
處理best()
管道的結果嗎?
對它們進行檢索.1.6? – Lvca
@Lvca我認爲它是2.1.0社區 – Odomontois