2015-01-14 3 views
0

Я пытаюсь использовать Freebase, чтобы найти все альтернативные имена указанной компании. В настоящее время у меня есть следующий код, который работает, когда вы указываете языки, в которых вы хотите, чтобы имя было. Я бы хотел, чтобы он возвращал все псевдонимы, независимо от языка. Однако, если я не укажу языки, результаты не возвращаются. Кроме того, если я включаю все языки в запрос как один длинный список, он возвращает результаты для неправильной компании. Когда я сделал это в приведенном ниже коде, он вернул результаты для Bank of America. Есть ли способ указать все языки? Основная цель кода - найти общие аббревиатуры компаний, хотя также и полные имена полезны.Freebase, чтобы найти альтернативные названия компаний

 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", "Royal Bank of Scotland"); 
     url.put("filter", "(all type:/organization/organization)"); 
     url.put("limit", "1"); 
     url.put("output", "(/common/topic/alias)"); 
     url.put("lang", "cs");//Specify Laungauges 
     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"); 
     System.out.println(results); 

ответ

1

Параметр lang принимает список языков, разделенных запятой. Если вы действительно хотите всех, вы можете просто использовать весь список, который в настоящее время является:

«еп, ES, FR, де, это, пт, ж, Ja, ко, р, св, фантастический, да, п, эль, ро, т, х, й, пли, CS, идентификатор, Б.Г., Великобритания, CA, ес, нет, сла, ск, ч, ср, ар, привет, VI, фа, га, IW, лев, л, Г.Л., является, гип, вот, км, кв, фил, ZXX "

с https://www.googleapis.com/freebase/v1/search?help=langs&indent=true как описано на https://developers.google.com/freebase/v1/search-cookbook#language-constraints

Этот запрос работает для меня:

https://www.googleapis.com/freebase/v1/search?query=" Royal% 20Bank% 20of% 20Scotland "& filter = (все% 20type:/организация/или ganization% 20) & limit = 1 & output = (/ common/topic/alias% 20) & lang = en, es, fr, de, it, pt, zh, ja, ko, ru, sv, fi, da, п, эль, ро, т, х, й, пли, CS, идентификатор, Б.Г., Великобритания, CA, ес, нет, сла, ск, ч, ср, ар, привет, VI, фа, га, IW, лев, lt, gl, is, hy, lo, km, sq, fil, zxx

+0

Да, я пробовал это, но по какой-то неизвестной причине, когда вы включаете весь список языков, он возвращает неверные результаты. Когда я попробовал это в приведенном выше коде, он дал мне альтернативные имена для Bank of America, а не RBS, тогда как когда я включил только cs, el ожидаемые результаты были возвращены. Также попробовал * и все без успеха. – user2644013

+0

Я не могу воспроизвести ваши результаты. Я отредактировал свой ответ, чтобы включить рабочий запрос. –

+0

Да, это работает сейчас, спасибо за вашу помощь. – user2644013