2013-09-25 78 views
1

是否有可能返回type of an entities(例如位置) 就像freebase search的工作方式?我使用freebase搜索示例代碼(我將在下面提供它們)來生成搜索結果,但即使使用通配符,它​​也不會提取實體類型,下面是一些示例結果。Freebase searchAPI返回類型

樣品結果

["\/en\/bukit_panjang","Bukit Panjang",284.883636,"\/m\/04fxxf","en"] 
["\/en\/bukit_panjang_mrt_station",{"id":"\/metropolitan_transit\/transit_stop","name":"Transit Stop"},"Bukit Panjang LRT\/MRT Station",250.857147,"\/m\/0661mk1","en"] 
["\/en\/bukit_panjang_plaza",{"id":"\/business\/shopping_center","name":"Shopping center"},"Bukit Panjang Plaza",229.566818,"\/m\/02q_h6s","en"] 




搜索示例代碼

import com.google.api.client.http.GenericUrl; 
import com.google.api.client.http.HttpRequest; 
import com.google.api.client.http.HttpRequestFactory; 
import com.google.api.client.http.HttpResponse; 
import com.google.api.client.http.HttpTransport; 
import com.google.api.client.http.javanet.NetHttpTransport; 
import com.jayway.jsonpath.JsonPath; 
import java.io.FileInputStream; 
import java.util.Properties; 
import org.json.simple.JSONArray; 
import org.json.simple.JSONObject; 
import org.json.simple.parser.JSONParser; 

public class SearchSample { 
    public static Properties properties = new Properties(); 
    public static void main(String[] args) { 
    try { 
     properties.load(new FileInputStream("freebase.properties")); 
     HttpTransport httpTransport = new NetHttpTransport(); 
     HttpRequestFactory requestFactory = httpTransport.createRequestFactory(); 
     JSONParser parser = new JSONParser(); 
     GenericUrl url = new GenericUrl("https://www.googleapis.com/freebase/v1/search"); 


     url.put("query", "Bukit Panjang"); 
     //url.put("filter", "(any type:/people/person domain:location/citytown/)"); 
     url.put("filter", "(any part_of:singapore)"); 


     url.put("limit", "10"); 
     url.put("indent", "true"); 
     url.put("key", properties.get("API_KEY")); 
     HttpRequest request = requestFactory.buildGetRequest(url); 
     HttpResponse httpResponse = request.execute(); 
     JSONObject response = (JSONObject)parser.parse(httpResponse.parseAsString()); 
     JSONArray results = (JSONArray)response.get("result"); 
     for (Object result : results) { 
     System.out.println(JsonPath.read(result,"$.*").toString()); 
     } 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 
    } 
} 

回答