2014-04-01 56 views
0

我一直在努力爲現有的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管理模式瀏覽器中檢查了我的新字段,並且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捲曲的實現,爲什麼是我Dev HTTP Client(有效捲曲GUI)的請求,雖然看似在某些方面取得成功似乎隱藏了搜索引起的影響記錄?

任何有識之士將不勝感激。

在此先感謝!

更新: 如果我查詢我更新了記錄的id,我得到正確的一回,完成了新的領域,我輸入了正確的數據。這樣的工作!但它仍未出現在搜索結果中。我的搜索查詢有問題嗎?如果是這樣,如果我只是添加一個字段,爲什麼還要更改呢?

回答

0

它看起來像你沒有提交你的更新記錄。

請務必添加

commit=true 

所以,也許嘗試改變網址是這樣的

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

我不是在爲我的數據請求相同的請求提交,但我如上所述,之後再提交第二個請求。在功能上,如果我在一個或兩個請求中提交,它會有所作爲嗎? – bronzehedwick

相關問題