2012-02-10 23 views
1

我有一個允許用戶提交野生動物照片的網站。一旦上傳,他們可以識別照片上的物種,例如「北極熊」。如何通過API使用不同外殼的搜索條件來穩健檢查Wikipedia頁面

這觸發我從維基百科獲取關於該物種的信息,使用該搜索詞:

$query = "http://en.wikipedia.org/w/api.php?action=query&rvprop=content&format=json&titles=" . $query; 
$pages = file_get_contents($query); 

這樣的查詢返回下列之一:

  • pageids的數組,這是我然後可以查詢該頁面的內容
  • 什麼都沒有,因爲根本沒有任何匹配
  • REDIRECT結果,它允許我解析頁面用專用名稱

我的問題與套管有關。例如,搜索術語「銀河鸛」,沒有返回,甚至沒有重定向。 「銀河鸛」確實有效。對查詢中的每個單詞進行大寫並不是一種解決方案,因爲可能有些頁面是小寫的,而大寫查詢不起作用。沒有一致性。

我正在尋找一種方法來使這更強大。它不應該是因爲錯誤的外殼而導致查詢失敗,這在用戶方面甚至不能預測。

有沒有人知道這個解決方案?除了嘗試每種可能的腸衣組合嗎?

注意:有些人可能會建議使用dbpedia來代替,但這對我的總體需求沒有任何解決方案。

回答

3

可惜的是,沒有簡單的解決方案 - 閱讀http://www.mediawiki.org/wiki/API:Opensearch#Note_on_case_sensitivity

您可以嘗試改用OpenSearch的找到合適的外殼(如果正常的查詢返回任何可用): http://en.wikipedia.org/w/api.php?action=opensearch&search=milky+stork&namespace=0&suggest= 會給你

["milky stork",["Milky Stork"]] 
+0

非常感謝亞歷克斯。這樣可行。你說這不是一個簡單的解決方案,但它只需要我幾行代碼來使用你的建議,現在它支持所有套管變體! – Ferdy 2012-02-10 10:55:07

1

我認爲嘗試每種可能的組合都是一個可行的解決方案。因此,您的查詢可能如下所示:

http://en.wikipedia.org/w/api.php?action=query&rvprop=content&format=json&titles=Milky stork|Milky Stork 

請注意,維基百科上的第一個字母不區分大小寫。

+0

我不知道你可以使用「|」字符包含多個搜索查詢。儘管如此,我仍然堅持以上的答案,因爲我已經編碼它,迄今爲止效果很好。 – Ferdy 2012-02-10 23:12:51

相關問題