按位置列出的Google自定义搜索结果不当

时间:2018-07-30 08:51:41

标签: java google-api google-custom-search

我正在开发一个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,但是并没有改变结果列表。

你们能建议我一些如何获得基于真实位置的结果的想法吗?

0 个答案:

没有答案