使用Java中的Customsearch搜索完全包含两个给定字符串的页面
我在Java应用程序中使用使用Java中的Customsearch搜索完全包含两个给定字符串的页面,java,google-custom-search,Java,Google Custom Search,我在Java应用程序中使用google api services customsearchv1-rev46-1.21.0查找包含两个精确字符串的页面 假设我有两个名字,billgates和stevejobs,我想找到所有提到这两个名字的页面。如果我使用谷歌搜索页面,我会运行以下查询: "Bill Gates" "Steve Jobs" (注意,我没有使用+符号,因为它不再是有效的运算符) 我希望通过Java进行同样的精确搜索,但我找不到一种方法使其工作。有什么建议吗?请在下面找到一个最小工作示
google api services customsearch
v1-rev46-1.21.0查找包含两个精确字符串的页面
假设我有两个名字,billgates
和stevejobs
,我想找到所有提到这两个名字的页面。如果我使用谷歌搜索页面,我会运行以下查询:
"Bill Gates" "Steve Jobs"
(注意,我没有使用+
符号,因为它不再是有效的运算符)
我希望通过Java进行同样的精确搜索,但我找不到一种方法使其工作。有什么建议吗?请在下面找到一个最小工作示例(API\u KEY
和SEARCH\u-ENGINE\u-ID
已经过测试且正确):
这意味着‘找到任何一个包含一个或多个以上单词的页面,无论其顺序如何,这不是我想要做的。非常感谢您提供的任何解决方案或有用的文档
我刚刚意识到,上面的代码适用于像
比尔·盖茨
和史蒂夫·乔布斯
这样的大名鼎鼎的人,但不适用于其他不太出名的人。这是否意味着当前customsearch引擎在未找到任何结果时返回null?如果是这样的话,为什么我在谷歌网站上运行查询时会得到很多结果?我发布为最小工作示例的代码是正确的。
我没有得到任何结果的原因是我在谷歌的控制面板中对Customsearch引擎设置了许多限制(即:没有来自LinkedIn、Facebook、Twitter等的结果)。当我放松约束时,我得到了期望的结果。我发布为最小工作示例的代码是正确的。 我没有得到任何结果的原因是我在谷歌的控制面板中对Customsearch引擎设置了许多限制(即:没有来自LinkedIn、Facebook、Twitter等的结果)。当我放松约束时,我得到了期望的结果
public class Example {
private static String name1 = "Bill Gates";
private static String name2 = "Steve Jobs";
public static void main(String[] args) throws IOException {
HttpTransport httpTransport = new NetHttpTransport();
JsonFactory jsonFactory = new JacksonFactory();
Customsearch customsearch = new Customsearch(httpTransport, jsonFactory, null);
Customsearch.Cse cse = customsearch.cse();
String format = String.format("\"%s\" \"%s\"", name1, name2);
Customsearch.Cse.List request = cse.list(format);
request.setKey(Consts.API_KEY);
request.setCx(Consts.SEARCH_ENGINE_ID);
Search search = request.execute();
List<Result> results = search.getItems();
if (null != results) {
for (Result result : results) {
System.out.println("* " + result.getLink());
System.out.println(result.getSnippet());
System.out.println();
}
}
}
}
Bill Gates Steve Jobs