【问题标题】:Trying to add a new field to solr collection removes the record?尝试向 solr 集合添加新字段会删除记录?
【发布时间】:2014-04-01 22:22:08
【问题描述】:

我一直在努力向现有的 solr 集合添加一个新字段并向其中添加数据。简而言之,当我更新文档时,我尝试更改的记录会从搜索结果中消失。

我将提供一些背景知识,然后进一步解释。首先,我使用的是 solr 版本3.4.0,我正在通过 php 脚本更新集合。

我将新字段添加到schema.xml;我应该指出,还有许多其他领域已经存在。我的新字段如下所示:

<field name="vocabularies" type="integer" indexed="true" stored="true" multiValued="true"/>

将字段添加到schema.xml 后,我重新启动了 solr 服务器,然后开始在 solr 管理模式浏览器中看到我的新字段。到现在为止还挺好。

继续我的 php 脚本,我的 curl 选项如下。

$options = array(
  CURLOPT_URL => 'http://10.156.10.21:8983/solr/mycollection/update',
  CURLOPT_HEADER => 0,
  CURLOPT_HTTPHEADER, array(
    'Content-Type: text/xml',
  ),
  CURLOPT_RETURNTRANSFER => 1,
  CURLOPT_POST => 1,
  CURLOPT_BINARYTRANSFER => 1,
  CURLOPT_POSTFIELDS => $update_query,
);
$ch = curl_init();
curl_setopt_array($ch, $options);
$contents = curl_exec($ch);
curl_close($ch);

$update_query 变量填充了如下内容:

       <add>
        <doc>
          <field name="id">id55328</field>
          <field name="title">MyRecord</field>
          <field name="description">My description.</field>
          <field name="author">Winston</field>
          <field name="image_link">http://mydomain.com/my/image/path/image.jpg</field>
          <field name="link">http://www.mydomain.com/my-url</field>
          <field update="add" name="vocabularies">12</field>
          <field update="add" name="vocabularies">24</field>
        </doc>
      </add>

id 字段是 uniqueKey 字段。发送此POST 后,我发送另一个POST,其curl 配置与上述相同,只是$update_query 变量被替换为'&lt;commit/&gt;'

现在,当我运行我的 php 脚本时,没有任何变化。为了查看我的 php curl 设置是否存在问题,我尝试从 Dev HTTP Client 运行 POST

我将请求类型设置为POST,添加了Content-Type: text/xml 标头,并发送了与上面包含的$update_query 变量相同的xml

我收到了以下回复:

<?xml version="1.0" encoding="UTF-8"?>
<response>
  <lst name="responseHeader">
    <int name="status">0</int>
    <int name="QTime">2996</int>
  </lst>
</response>

我发送了&lt;commit/&gt;POST,然后检查了我的搜索结果,我希望更改的记录已经从搜索结果中消失了。我检查了数据库中 solr 记录的总量,这个数字没有改变。然后我在 solr 管理模式浏览器中检查了我的新字段,termfrequency 计数已更新,反映了我的更改。

我使用的搜索查询结构是这样的:

http://10.156.10.21:8983/solr/mycollection/select?q=*&start=50&rows=25&fq=sID:1&fl=nid+author+description+id+image_link+link+title+vocabularies&qt=&wt=&explainOther=&hl.fl=

所以我的问题是,我的 php curl 实现有什么问题,为什么我的 Dev HTTP Client(实际上是一个 curl GUI)请求虽然在某些方面看似成功,但似乎隐藏了搜索中受影响的记录?

任何见解都将不胜感激。

提前致谢!

更新: 如果我查询我更新的记录的id,我会得到正确的结果,包括新字段和我输入的正确数据。所以这行得通!但它仍然没有出现在搜索结果中。我的搜索查询有问题吗?如果是这样,如果我只是添加一个字段,为什么它必须更改?

【问题讨论】:

    标签: php xml curl solr


    【解决方案1】:

    您似乎没有提交更新的记录。

    确保添加

    commit=true
    

    所以,也许尝试将 url 更改为这样的内容

    http://10.156.10.21:8983/solr/mycollection/update?commit=true
    

    【讨论】:

    • 我没有在与我的数据请求相同的请求中提交,但我确实在第二个请求中提交,如上所述。从功能上讲,如果我提交一个或两个请求会有所不同吗?
    猜你喜欢
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 2012-01-09
    相关资源
    最近更新 更多