如何使用 JSON 查询 Solr 获取 "numFound"?

How to get "numFound" using JSON query for Solr?

我只是想从 javascript.

的一段 Solr 查询中获取 "numFound" 数字

目前我的代码输出响应的数量,仅限于我指定的 X 行,以及 X 个项目。

我想要的是响应中的 "numFound" 值,并将其作为 var 存储在我的 javascript.

在下面的示例中,它将是 394。

    {
  "responseHeader":{
    "zkConnected":true,
    "status":0,
    "QTime":31,
    "params":{
      "q":"names:\"Leo Varadkar\" AND region:\"ROI\""}},
  "response":{"numFound":394,"start":0,"maxScore":11.911881,"docs":[

我不想要特定条目字段中的任何信息或类似信息。在我的 python 代码中,我可以通过类似“solr.search(query).hits”的方式获得这样的数字。但是,我一直无法通过探索这个找到一个等价物。我试图猜测 "data.response.hits" 之类的东西,但无济于事。我这里真是一头雾水!

我一直无法找到关于如何执行此操作的明确文档,也找不到有人做同样事情的示例,尽管这似乎是 Solr 中整个查询点的一个非常重要的方面。前 50 名的结果对我没有用。我正在处理数以万计的物品。我的困惑可能表明我未能理解整个事情的某些关键方面......但我不这么认为?

我要的就是那个数字。当然有人知道如何得到它吗?我打赌这很简单。

下面我的javascript:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>
function on_data(data) {
    $('#results').empty();
    var docs = data.response.docs;
    $.each(docs, function(i, item) {
        $('#results').prepend($('<div>' + item.name + '</div>'));
    });

    var hits = 'Found ' + data.response. + ' hits'
    $('#hits').prepend('<div>' + hits + '</div>');

    var total = 'Found ' + docs.length + ' results';
    $('#results').prepend('<div>' + total + '</div>');
}

function on_search() {
    var query = $('#query').val();
    if (query.length == 0) {
        return;
    }

    var url='http://localhost:8983/solr/articles/select?q=text:'+query+'&version=2.2&start=0&rows=10000&indent=on&wt=json&callback=?&json.wrf=on_data';
    var urlB='http://localhost:8983/solr/articles/select?q=text:'+query+'&version=2.2&start=0&rows=50&indent=on&wt=json&callback=?&json.wrf=on_data';
    $.getJSON(urlB);
}

function on_ready() {
    $('#search').click(on_search);
    /* Hook enter to search */
    $('body').keypress(function(e) {
        if (e.keyCode == '13') {
            on_search();
        }
    });
}

$(document).ready(on_ready);

结构是 {"response":{"numFound":394 ... }},它被加载到您的 data 变量中。

var hits = 'Found ' + data.response.numFound + ' hits'

.. 应该会给你你要找的号码。 hits 名称只是由各种库(在您的情况下可能是 pysolr)赋予相同的值。

您还可以使用 console.log(data) 在您的开发者工具控制台中查看解析后的数据结构 window。