3

是否可以使用 jquery AJAX 索引(添加/更新)solr?

网上没有例子,我一直在尝试但没有成功。下面是我的代码

 try {
            $.ajax({
                type: "POST",
                url: "http://192.168.10.113:8080/solr/update/json?commit=true",
                data: { "add": { "doc": { "id": "222222", "name": "Ruby on Trails"}} },
                contentType: "application/json",
                dataType: 'jsonp',
                crossDomain: true,
                jsonp: 'json.wrf',
                success: function (data) { alert(data); },
                failure: function (errMsg) {
                    alert(errMsg);
                }
            });
        }
        catch (err) {
            alert(err);
        }

我的 tomcat 服务器日志如下所述。[31/Oct/2012:15:56:24 +0530] "GET /solr/update/json?commit=true&json.wrf=jQuery1820996771614998579_1351662048057&add%5Bdoc%5D%5Bid%5D=222222&add%5Bdoc%5D%5Bname%5D=Ruby+on+Trails&_=1351678643653 HTTP/1.1" 200 159

虽然它说 200,但该文档并未添加到 solr。我已经等待了足够多的时间并重复了几次该过程,以消除 solr server 的提交策略是这里的罪魁祸首。在 chrome 浏览器中,它说 Uncaught SyntaxError: Unexpected token < 但这太笼统了,无法猜测。这是另一个问题。任何帮助表示赞赏。

4

3 回答 3

1

我有同样的问题。这个网站帮助了我:

$.ajax({
    url: "...",
    dataType: 'jsonp',
    jsonp: 'json.wrf',
    data: {
      q: "tag:" + request.term + "*"
    },
...
于 2014-10-28T12:12:41.253 回答
1

你需要仔细检查你实际上在做什么。首先,浏览器中未捕获的异常是一个不好的迹象,因为一旦引发它将停止任何 JavaScript 执行。即使您成功地进行了 solr 更新,您也不会看到成功和错误功能。确保在继续之前摆脱它。其次,您正在执行 POST 请求,并且您的日志显示 GET。您确定该日志条目对应于 jQuery 请求吗?

于 2012-10-31T11:45:53.810 回答
0

我也有同样的问题(Solr 4.5.1/JQuery 2.0.3)。我设法通过使用 GET Update API 解决了这个问题。我确认更新通过了我的 SOLR:

var id = "012345;
var cat = "foo";
var url = "http://localhost:8983/solr/update/json?commit=true";
var updateQuery = "<add><doc><field name='id'>" + id + "</field><field name='cat' update='set'>" + cat + "</field></doc></add>";

updateQuery = encodeURIComponent(updateQuery);
$.ajax({
    url: "http://localhost:8983/solr/update?commit=true&stream.body=" + updateQuery,
    type: "GET",
    crossDomain: true,
    dataType: 'jsonp',
    jsonp: 'json.wrf',
    success: function() { alert("success"); },
    error: function() { alert("error"); }
});

但是,即使使用这种方法,在 Chrome 上我仍然会收到以下错误。

' Uncaught SyntaxError: Unexpected token < '

于 2013-11-26T05:20:45.620 回答