2013-12-09 85 views
2

關於freebase的初學者的問題:Freebase查詢結果埋在廢話下

我正在尋找名爲「O」的電影的imdb id。如果我使用freebase.com網站上的搜索框和約束按類型搜索到all:/film/film,然後我得到與上面所述最佳匹配的高品質的結果:

http://www.freebase.com/search?query=o&lang=en&all=%2Ffilm%2Ffilm&scoring=entity&prefixed=true

但是,這並不包括IMDB ID。當我嘗試使用查詢編輯器重新創建和優化此搜索時,我無法弄清楚如何執行「常規查詢」。我能想出的最好的是做了模糊名稱搜索這樣的:

[{ 
    "type": "/film/film", 
    "name": null, 
    "name~=": "o", 
    "imdb_id": [], 
    "rottentomatoes_id": [] 
}] 

結果包含正是我想要的信息,但電影「O」僅12日結果列表中,面對很多被埋廢話:

http://www.freebase.com/query?lang=%2Flang%2Fen&q=[{%22type%22%3A%22%2Ffilm%2Ffilm%22%2C%22name%22%3Anull%2C%22name~%3D%22%3A%22o%22%2C%22imdb_id%22%3A[]%2C%22rottentomatoes_id%22%3A[]}]

我怎樣才能提高我的結果的質量? 「?query = o」使用"name~=":"o"沒有的特殊魔法?

回答

2

當您使用query=o時,freebase會對結果進行一些智能排序,首先顯示完全匹配,然後進行不完全匹配。

隨着您的查詢name ~= o您不是在搜索名稱爲「O」的電影,而是名稱中包含「O」的電影(~=運算符)。如果你要搜索一個特定的電影標題,然後指定的確切名稱:

[{ 
    "type": "/film/film", 
    "name": "o", 
    "imdb_id": [], 
    "rottentomatoes_id": [] 
}] 

這將導致輸出:

{ 
    "result": [{ 
    "imdb_id": [ 
     "tt0184791" 
    ], 
    "name": "O", 
    "type": "/film/film", 
    "rottentomatoes_id": [ 
     "o" 
    ] 
    }] 
} 
+0

我的歉意,我剛剛意識到我問我的問題不是很好:我需要用一定的模糊性來查詢。我給出的例子不是最好的,我會尋找更好的例子......無論如何,謝謝你指出〜=意思是「包含」,而不是「模糊匹配」,因爲我錯誤地假設了。 –

+0

@ MartinJ.H。這不完全是「包含」,而是「匹配」。 'name〜= o'與正則表達式匹配'o'的名稱相同 - 有效地做'包含'。 –

+0

不是。 「name〜=」:「o」與主題中的* word *「o」匹配。如果你想要一個真正的包含,你需要「* o *」(這可能會超時)。另外,搜索權重也是受歡迎程度的結果,而MQL不這樣做。 –

0

如果搜索給你你想要的話題,爲什麼不只是使用output parameter將IMDB標識(或其他任何你想要的)添加到你請求返回的輸出中?

+0

你可以舉例說明如何使用輸出參數嗎? –

+0

文檔頁面上有大量示例我添加了一個鏈接,因爲它顯然無法使用Google。 –