2008-11-07 78 views

回答

56

使用' - '來表示NOT。

例如,查詢ID爲不與A59開始文檔,查詢將是:-id:A59*,那就是:/solr/select/?q=-id:A59*

要通過查詢刪除,發佈查詢中刪除消息的更新處理,如指定here

編輯:NOT(全部大寫)也可以作爲運營商

1

我不相信,一個消極刪除通過查詢工作。看到這個Jira的票:https://issues.apache.org/jira/browse/SOLR-381

他們的確說有一個解決方法在前綴中,但我沒有任何運氣。

這不起作用(同使用NOT) 的java -ddata = ARGS -jar /opt/solr/example/exampledocs/post.jar 「-userid:*」 Java的罐子的/ opt/solr的/示例/exampledocs/post.jar * .xml

添加a:給出語法錯誤(與使用NOT相同) java -Ddata = args -jar /opt/solr/example/exampledocs/post.jar「: - 用戶名:*」 Java的罐子/opt/solr/example/exampledocs/post.jar * .XML

SimplePostTool:1.4版 SimplePostTool:過帳參數傳遞給http://localhost:8983/solr/update ... SimplePostTool:FATAL:Solr的返回錯誤#400錯誤解析Lucene的查詢 SimplePostTool:1.4版

7

感嘆號作品不一樣,所以:

/solr/select/?q=!id:A59* 

應的情況下工作上面。

+1

這個答案在上面那個沒有用的地方,我不確定,但我想```實際上可能會有稍微不同的語義 – Sammaye 2014-05-08 11:15:06

0

在刪除之前,請確保您所指的id是字符串,絕不會由兩個詞組合而成。 我會這樣做的方式是從腳本中讀取數據,並單獨刪除或批量執行,因爲它可以更好地控制和驗證每個ID,從而降低錯誤刪除的風險。 因此 1讀取數據從使用 /solr的/選擇/ q = ID從腳本的solr:A59 *

2驗證和確認的ID

3一次

刪除它們逐個或以組爲10個IDS

Regards

R阿雅

0

由於Mauricio說:

使用 - 符號,表示要在查詢中排除的。 以下兩個查詢將刪除以A59開頭的所有文檔。

GET http://<url>/solr/<core>/update?stream.body=<delete><query>-id:A59*</query></delete> 
GET http://<url>/solr/<core>/update?stream.body=<commit/> 

第一行執行刪除操作。 第二行進行提交。

0

使用文件前面的 - 符號暗示排除該特定值。它會給出像不等於

以下是示例url查詢字符串其中。我一直 「& FQ = -HQ_City_Code:MEL」,

它會跳過所有這些是有HQ_City_CodeMEL結果。

http://localhost:8983/solr/HQ_SOLR_Hotels/select?q=*:*&fq=HQ_National_Code:TH&fq=HQ_TYPE:hotel_EN&fq=HQ_Country_Code:AU&**fq=-HQ_City_Code:MEL**&wt=json&indent=true