我一直在努力简单地向现有的solr集合添加一个新字段并向其添加数据。简而言之,当我更新文档时,我尝试更改的记录会从搜索结果中消失。
我将给出一些背景知识,然后进一步解释。首先,我使用solr版本3.4.0
,我正在通过php脚本更新集合。
我将新字段添加到schema.xml
;我应该注意到还有许多其他领域已经存在。我的新领域看起来像这样:
<field name="vocabularies" type="integer" indexed="true" stored="true" multiValued="true"/>
将字段添加到schema.xml
后,我重新启动了solr服务器,然后开始在solr admin模式浏览器中看到我的新字段。到现在为止还挺好。
继续我的PHP脚本,我的卷曲选项在下面。
$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
与上面相同的卷曲配置,但$update_query
变量替换为'<commit/>'
。
现在,当我运行我的PHP脚本时,没有任何变化。为了查看我的php curl设置是否存在问题,我尝试从Dev HTTP Client运行POST
。
我将请求类型设置为POST
,添加了Content-Type: text/xml
标头,并发送了与上面包含的xml
变量相同的$update_query
。
我收到了以下回复:
<?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 admin模式浏览器中检查了我的新字段,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
,我会找回正确的记录,完成新字段和我输入的正确数据。这样才有效!但它仍未出现在搜索结果中。我的搜索查询有问题吗?如果是这样,如果我只是添加一个字段,为什么还要改变?
答案 0 :(得分:0)
看起来您没有提交更新的记录。
确保添加
commit=true
所以,也许尝试将网址改为这样的
http://10.156.10.21:8983/solr/mycollection/update?commit=true