2013-06-03 48 views
1

我使用索拉4與日光浴,我需要刪除多個條件。該文檔顯示如何刪除查詢我如何刪除與查詢和過濾器在索爾4(瓦特/日光浴)

$client = new Solarium\Client($config); 

$update = $client->createUpdate(); 

$update->addDeleteQuery('type:comment'); 
$update->addCommit(); 

$result = $client->update($update); 

這工作正常。但是如果我需要一個不同的標準,例如writer_id:123,我不知道該怎麼做。如果我添加其他addDeleteQuery線最終原始查詢看起來像:

<update> 

    <delete> 
    <query>type:comment</query> 
    </delete> 

    <delete> 
    <query>writer_id:123</query> 
    </delete> 

    <commit/> 

</update> 

看來,這將獨立地刪除它們。我不確定它是否重要,但架構中的defaultOperator是AND。看起來像http://www.solarium-project.org/forums/topic/change-operator/,它不容易覆蓋。我不知道如何應用那裏的解決方案來刪除,如果這樣做甚至可以在這裏工作。

如何使用多個條件刪除solr中的項目?

回答

3

嘗試將它聚合成單個查詢<delete><query>type:comment AND writer_id:123</query></delete>

+0

差不多 - 將OR更改爲AND我將其標記爲已回答。我做了addDeleteQuery('(類型:評論和writer_id:123)'),似乎工作。我不確定查詢中是否需要()。 – Yehosef

+1

完成....不需要.... – Jayendra

+0

記住在post.jar中使用雙引號,而不是單引號,否則你會得到一個奇怪的錯誤消息:「現在不應該有...」。 –