【发布时间】: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 变量被替换为'<commit/>'。
现在,当我运行我的 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>
我发送了<commit/>POST,然后检查了我的搜索结果,我希望更改的记录已经从搜索结果中消失了。我检查了数据库中 solr 记录的总量,这个数字没有改变。然后我在 solr 管理模式浏览器中检查了我的新字段,term 和 frequency 计数已更新,反映了我的更改。
我使用的搜索查询结构是这样的:
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,我会得到正确的结果,包括新字段和我输入的正确数据。所以这行得通!但它仍然没有出现在搜索结果中。我的搜索查询有问题吗?如果是这样,如果我只是添加一个字段,为什么它必须更改?
【问题讨论】: