2009-07-12 1 views

Antwort

1

Hier ist eine Art und Weise: Vorausgesetzt, dass jedes Dokument eine ID hat, und dass die doppelten Dokumente haben die gleiche ID:

mark the indexes by I1..Im. 
for i in 1..m, let Ci = all the indexes but Ii 
    for all the documents Dj in Ii, 
    let cur_term = "id:<Dj's id>" 
    for Ik in Ci 
    Ik.deleteDocuments(cur_term) 
merge all indexes 

Der Kern ist: löschen Sie alle Dokumente, die die gleiche ID, wie sie das aktuelle Dokument aus den anderen Indizes. Nachdem Sie dies für alle Indizes getan haben, führen Sie sie zusammen. Ich weiß, das ist nicht elegant, aber ich kenne keinen besseren Algorithmus.

+0

Danke, ich hoffte irgendwie zu vermeiden, den gesamten Temp-Index zu durchlaufen ... – Roey

+0

Was ist, wenn die ID identisch ist, sind die Inhalte unterschiedlich. Vielleicht sollte man einen Zeitrahmen benutzen – asyncwait

Verwandte Themen