我正在开发一个Java应用程序,该应用程序可以使用Google自定义搜索API将相同的结果返回到常规Google搜索中。
我知道有很多因素,例如cookie,位置,语言等。但是,粗略地近似会很好!
我发现我可以使用该API的parameters。
但是,将'gl'(地理位置)设置为“我们” ,将'hl'(界面语言)参数设置为“ en” (美国),我仍然从我居住的国家/地区获得另一种语言的结果。
我可以将'lr'值设置为“ lang_en” ,但是普通的Google搜索用户不会使用搜索过滤器进行简单的搜索。
我的代码的核心如下:
public static List<QueryResult> getCustomResult(String term, int resultNumber) throws IOException {
Customsearch.Cse.List actQuery;
List<QueryResult> items = new LinkedList<>();
//Number of loops. Each loop gives back 10 results.
int loops = (int) Math.ceil((resultNumber) / 10.0);
for (int i = 0; i < loops; i++) {
actQuery = CustomSearchInstance.getCs().cse().list(term)
.setCx("ENGINE_ID/CX")
.setNum(10L)
.setStart(1L + (long) i * 10)
.setGl("us")
.setHl("us");
// Language restriction
//.setLr("lang_US")
Search results = actQuery.execute();
for (Result result : results.getItems()) {
QueryResult queryResult = new QueryResult(result);
items.add(queryResult);
}
}
return items;
}
我还读到,在构建CustomSearch实例时可以设置用户IP:
Customsearch cs =
new Customsearch.Builder(GoogleNetHttpTransport.newTrustedTransport(), JacksonFactory.getDefaultInstance(), null)
.setApplicationName("APP_NAME")
.setGoogleClientRequestInitializer(new CustomsearchRequestInitializer("API_KEY","USER_IP"))
.build();
我尝试了很多IP,但是并没有改变结果列表。
你们能建议我一些如何获得基于真实位置的结果的想法吗?