-1

我正在使用 Python 访问 Retreive-And-Rank 服务。到目前为止,我已经上传了我的配置和文档,并在相关文件上训练了我的排名器。我想剩下的就是将一些查询结果(来自 Solr?)传递给我的 RAR 对象的“rank”方法。

我的问题:这些结果究竟是什么,它们以什么形式出现?我如何访问它们?

现在我正在使用 get_pysolr_client() 方法访问 PySolr 对象,然后搜索查询并使用返回的结果:

answer_data = pysolr.search(query)
rrv1.rank(<my_ranker_id>, answer_data, top_answers=10)

我这样做是因为它类似于 IBM 在Java 示例中的 rank() 方法中所做的。但我收到错误消息:

AttributeError: 'Results' object has no attribute 'read'

我得到这个是因为 PySolr 返回一个“结果”对象。

我应该将什么传递给 rank() 方法以使其工作?

rank 方法的 Retrieve_and_Rank 规范如下,我认为 answer_data 应该是一个“类文件”对象:

def rank(self, ranker_id, answer_data, top_answers=10)
4

1 回答 1

0

一种解决方法是调用 pysolr 的_send_request方法:

results = pysolr._send_request("GET", path="/fcselect?q=%s&ranker_id=%s&wt=json" %
                              (query_string, ranker_id))
for doc in json.loads(results)["response"]["docs"]:
    print doc

感谢dW Answers上的 rishavc 。

于 2016-07-20T12:42:24.050 回答