我正在嘗試做一些(應該)很簡單的事情。也許我錯過了一些東西。檢索/存儲Freebase中的所有相關演員
我想獲得一個人的合作人員的完整列表。我的最終目標是找出最常與誰合作的人(以任何可能的關係)
例如:Robert De Niro
已與喬·派西共同執行7次,但指示他兩次。我想要一張有9個條目的表格。
我可以使用主題API,但只返回電影列表。然後我必須執行10多個API查詢才能獲得每部電影的演員表。取而代之,代碼是一場噩夢。
如果我使用MQL搜索,我只能搜索電影是Robert De Niro
具有在出演,但不是每部電影他曾執導過的或書面的,或生產,或出演,基本上我只能通過搜索1次角色。
有沒有更好的方法?我需要的列表,以結束:
Movies
Actors/Crew People
Roles
聯Movies
和People
我目前做的:
- 搜索
Robert De Niro
並獲得機器ID - 做的是MID的話題搜索,返回電影MID的他已經在
- 工作做每部電影MID的話題搜索的列表,以及創紀錄的領域,如directed_by,主演,produced_by等
由於你可以看到這是一個非常昂貴的操作。以這種方式避免重複也非常困難(儘管我正在處理它)
編輯:這是我當前的MQL查詢(由於某種原因,它只適用於我指定了兩個actor名稱的情況,但這是另一個。問題
$query = array(array(
'a:starring'=>array('actor'=>'Joe Pesci'),
'b:starring'=>array('actor'=>'Robert De Niro'),
'directed_by'=>null,
'produced_by'=>array(),
'written_by'=>array(),
'executive_produced_by'=>array(),
'name'=>null,
'mid'=>null,
'starring'=>array(array('actor'=>array('mid'=>null,
'name'=>null))),
'type'=>'/film/film'
));
的MQL:
[{
"a:starring":
{"actor":"Joe Pesci"},
"b:starring":
{"actor":"Robert De Niro"},
"directed_by":null,
"produced_by":[],
"written_by":[],
"executive_produced_by":[],
"name":null,
"mid":null,
"starring":
[{"actor":
{"mid":null,"name":null}}],
"type":"\/film\/film"}]
你會這麼好心提供一個示例查詢? 用我當前正在使用的查詢更新帖子。這是我第一次使用MQL,文檔非常混亂。我看到可選標誌,但沒有返回任何結果。或者,如果您知道從API獲取錯誤消息的任何方式,那也可以幫助(如果查詢在某些方面不正確,則返回NULL) – sricks
如果添加MQL(而不是PHP或當前的任何),我會考慮爲你修改它。 API確實會返回錯誤查詢的錯誤。對於不匹配主題的查詢,它將返回null或空集。通過不使用「可選」,您會過度限制查詢,因此它不會返回任何結果。 –
謝謝,我剛剛更新了JSON數組的問題。 – sricks