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サーバーのコミット戦略を取り除くために、十分に待ってプロセスを数回繰り返しました。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 update を正常に実行したとしても、success 関数と error 関数は表示されません。さらに先に進む前に、必ずそれを取り除くようにしてください。次に、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 に答える