我一直在努力爲現有的solr集合添加一個新的字段並向其中添加數據。總之,當我更新文檔時,我試圖改變的記錄從搜索結果中消失。嘗試向solr集合添加新字段會刪除記錄?
我會給一點背景,然後再解釋一下。首先,我使用solr版本3.4.0
,並且我通過php腳本更新了集合。
我將我的新字段添加到schema.xml
;我應該注意到,還有許多其他的領域已經存在。我的新領域是這樣的:
<field name="vocabularies" type="integer" indexed="true" stored="true" multiValued="true"/>
後我加入了場schema.xml
,我重新啓動Solr的服務器,然後開始看到在Solr管理架構瀏覽器我的新領域。到現在爲止還挺好。
轉到我的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捲曲設置的問題,我試着從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捲曲的實現,爲什麼是我Dev HTTP Client
(有效捲曲GUI)的請求,雖然看似在某些方面取得成功似乎隱藏了搜索引起的影響記錄?
任何有識之士將不勝感激。
在此先感謝!
更新: 如果我查詢我更新了記錄的id
,我得到正確的一回,完成了新的領域,我輸入了正確的數據。這樣的工作!但它仍未出現在搜索結果中。我的搜索查詢有問題嗎?如果是這樣,如果我只是添加一個字段,爲什麼還要更改呢?
我不是在爲我的數據請求相同的請求提交,但我如上所述,之後再提交第二個請求。在功能上,如果我在一個或兩個請求中提交,它會有所作爲嗎? – bronzehedwick