【问题标题】:How to execute searchAndRank method in IBM Watson Retrieve And Rank API through Java wrapper如何通过 Java 包装器在 IBM Watson Retrieve And Rank API 中执行 searchAndRank 方法
【发布时间】:2016-08-05 11:35:39
【问题描述】:

我正在尝试使用 Java 包装器执行 retrieveAndRank 查询。我关注 Retrieve and Rank API 的在线 javadocs。 SearchAndRank 的示例是:

https://www.ibm.com/watson/developercloud/retrieve-and-rank/api/v1/#query_ranker

RetrieveAndRank service = new RetrieveAndRank();
service.setUsernameAndPassword("{username}","{password}");
HttpSolrClient solrClient = new HttpSolrClient;
solrClient = getSolrClient(service.getSolrUrl("scfaaf8903_02c1_4297_84c6_76b79537d849"), "{username}","{password}");
SolrQuery query = new SolrQuery("what is the basic mechanism of the transonic aileron buzz");
QueryResponse response = solrClient.query("example_collection", query);
Ranking ranking = service.rank("B2E325-rank-67", response);
System.out.println(ranking);

但是 RetrieveAndRank 类没有这样的 rank(String rankerId, QueryResponse response) 方法。只有一个获取文件或 InputStream 作为参数(浏览 IBM 的源代码,我看到它需要 CSV 内容而不是 java QueryResponse)。

我应该如何将 QueryResponse 传递给 rank 方法?

我正在使用 solr-solrj-5.5.2.jar 和 java-sdk-3.2.0-jar-with-dependencies.jar 库

【问题讨论】:

    标签: java ibm-watson retrieve-and-rank


    【解决方案1】:

    您需要使用/fcselect 查询处理程序并将ranker_id 作为参数发送。

    下面的代码假设您有一个包含文档的 Solr 集合,并且您已经训练了一个排名器,否则请遵循 tutorial

     RetrieveAndRank service = new RetrieveAndRank();
     service.setUsernameAndPassword(USERNAME, PASSWORD);
    
     // create the solr client
     String solrUrl = service.getSolrUrl(SOLR_CLUSTER_ID);
     HttpClient client = createHttpClient(solrUrl, USERNAME, PASSWORD);
     HttpSolrClient solrClient = new HttpSolrClient(solrUrl, client);
    
     // build the query
     SolrQuery query = new SolrQuery("*:*");
     query.setRequestHandler("/fcselect");
     query.set("ranker_id", RANKER_ID);
    
     // execute the query
     QueryResponse response = solrClient.query(SOLR_COLLECTION_NAME, query);
     System.out.println("Found " + response.getResults().size() + " documents!");
     System.out.println(response);
    

    确保更新 RetrieveAndRank(USERNAMEPASSWORD)、SOLR_CLUSTER_IDSOLR_COLLECTION_NAMERANKER_ID 的服务凭据。 createHttpClient()的代码可以在here找到。

    【讨论】:

      猜你喜欢
      • 2016-06-21
      • 1970-01-01
      • 2017-09-01
      • 2019-08-08
      • 1970-01-01
      • 2017-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多