0

我正在尝试使用 ajax 在 solr 服务器中添加新文档。

要在 solr 服务器中添加新文档,我们必须编写 http://192.168.10.113:8080/solr/update/?commit=true%20-H%20%22Content-Type:%20text/xml%22%20 --data-binary%20%20%3Cadd%3E%3Cdoc%3E%3Cfield%20name='id'%3E19990%3C/field%3E%3C/doc%3E%3C/add%3E

实际代码:<add><doc><field name='id>19990></field></doc></add>

现在我尝试在服务器中添加文档。

我的 AJAX 代码:

$.ajax({
            url: "http://192.168.10.113:8080/solr/update/?commit=true%20-H%20%22Content-Type:%20text/xml%22%20--data-binary%20'<add><response><doc><field%20name='id'>19990</field></doc></response></add>'",
            type: 'POST',
            success: function (data) {
                    alert(data);
            }
        });

ajax 调用没有显示任何错误。

然后我尝试获取这样的数据:http://192.168.10.113:8080/solr/select/?q=19990&version=2.2&start=0&rows=10&indent=on

它没有显示该数据。

请帮忙

4

2 回答 2

1
  1. solr 存储库更新可能需要一些时间。查看您的提交策略,也许尝试自己提交。

  2. 你是如何尝试添加它的?使用卷曲?或使用一些浏览器?因为请求可能是更新或发布请求......

  3. 使用这个:https ://github.com/evolvingweb/ajax-solr

  4. “--data-binary”是一个 curl 标志,不应该在 url 中,您应该将 xml 数据放在 ajax 请求的数据中,而不是在 url 中:

 $.ajax({
        type     : "POST",
        url      : "http://192.168.10.113:8080/solr/update/?commit=true",
        data     : { xml: escape("<add><response><doc><field name=id>19990</field></doc></response></add>") },
        dataType : "text/xml",
        success  : function(msg){
            alert('Success ');
        },
        error    : function(msg) {
            alert('Failed');
        }
    });
于 2012-10-26T13:07:00.747 回答
0

根据Solr Wiki - Update XML Messages页面上显示的示例,您的添加代码格式似乎已关闭。它应该是以下内容:

<add><doc><field name="id">19990</field></doc></add>

网址编码值: %3Cadd%3E%3Cdoc%3E%3Cfield%20name%3D%22id%22%3E19990%3C%2Ffield%3E%3C%2Fdoc%3E%3C%2Fadd%3E

试一试,看看是否添加了文档。

此外,由于您使用的是 Ajax,如果您的数据已经是 JSON 格式,您可能需要考虑发送 JSON 数据。有关更多详细信息,请参阅Solr Wiki - 更新 JSON

于 2012-10-26T12:49:00.200 回答