Apache Solr - Belgeleri Silme
Belgeyi Silme
Belgeleri Apache Solr dizininden silmek için, silinecek belgelerin kimliklerini <delete> </delete> etiketleri arasında belirtmemiz gerekir.
<delete>
<id>003</id>
<id>005</id>
<id>004</id>
<id>002</id>
</delete>
Burada, bu XML kodu kimlikli belgeleri silmek için kullanılır. 003 ve 005. Bu kodu adıyla bir dosyaya kaydedindelete.xml.
Adlı çekirdeğe ait olan dizinden belgeleri silmek isterseniz my_core, sonra gönderebilirsiniz delete.xml kullanarak dosya post aracı aşağıda gösterildiği gibi.
[Hadoop@localhost bin]$ ./post -c my_core delete.xml
Yukarıdaki komutu çalıştırdığınızda, aşağıdaki çıktıyı alacaksınız.
/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files
org.apache.Solr.util.SimplePostTool delete.xml
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/Solr/my_core/update...
Entering auto mode. File endings considered are
xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,
rtf,htm,html,txt,log
POSTing file delete.xml (application/xml) to [base]
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update...
Time spent: 0:00:00.179
Doğrulama
Apache Solr web arayüzünün ana sayfasını ziyaret edin ve çekirdeği şu şekilde seçin: my_core. Metin alanına ":" sorgusunu ileterek tüm belgeleri almaya çalışınqve sorguyu yürütün. Yürütme sırasında, belirtilen belgelerin silindiğini görebilirsiniz.

Bir Alanı Silme
Bazen kimlik dışındaki alanlara göre belgeleri silmemiz gerekir. Örneğin şehrin Chennai olduğu belgeleri silmemiz gerekebilir.
Bu tür durumlarda, <query> </query> etiket çifti içindeki alanın adını ve değerini belirtmeniz gerekir.
<delete>
<query>city:Chennai</query>
</delete>
Olarak kaydedin delete_field.xml ve adlı çekirdek üzerinde silme işlemini gerçekleştirin my_core kullanmak post Solr aracı.
[Hadoop@localhost bin]$ ./post -c my_core delete_field.xml
Yukarıdaki komutu yürütürken, aşağıdaki çıktıyı üretir.
/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files
org.apache.Solr.util.SimplePostTool delete_field.xml
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/Solr/my_core/update...
Entering auto mode. File endings considered are
xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,
rtf,htm,html,txt,log
POSTing file delete_field.xml (application/xml) to [base]
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update...
Time spent: 0:00:00.084
Doğrulama
Apache Solr web arayüzünün ana sayfasını ziyaret edin ve çekirdeği şu şekilde seçin: my_core. Metin alanına ":" sorgusunu ileterek tüm belgeleri almaya çalışınqve sorguyu yürütün. Yürütme sırasında, belirtilen alan değeri çiftini içeren belgelerin silindiğini görebilirsiniz.

Tüm Belgelerin Silinmesi
Tıpkı belirli bir alanı silmek gibi, bir dizindeki tüm belgeleri silmek istiyorsanız, aşağıda gösterildiği gibi <query> </ query> etiketleri arasına “:” simgesini iletmeniz yeterlidir.
<delete>
<query>*:*</query>
</delete>
Olarak kaydedin delete_all.xml ve adlı çekirdek üzerinde silme işlemini gerçekleştirin my_core kullanmak post Solr aracı.
[Hadoop@localhost bin]$ ./post -c my_core delete_all.xml
Yukarıdaki komutu yürütürken, aşağıdaki çıktıyı üretir.
/home/Hadoop/java/bin/java -classpath /home/Hadoop/Solr/dist/Solr-core
6.2.0.jar -Dauto = yes -Dc = my_core -Ddata = files
org.apache.Solr.util.SimplePostTool deleteAll.xml
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/Solr/my_core/update...
Entering auto mode. File endings considered are
xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,
htm,html,txt,log
POSTing file deleteAll.xml (application/xml) to [base]
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/Solr/my_core/update...
Time spent: 0:00:00.138
Doğrulama
Apache Solr web arayüzünün ana sayfasını ziyaret edin ve çekirdeği şu şekilde seçin: my_core. Metin alanına ":" sorgusunu ileterek tüm belgeleri almaya çalışınqve sorguyu yürütün. Yürütme sırasında, belirtilen alan değeri çiftini içeren belgelerin silindiğini görebilirsiniz.

Java (İstemci API) kullanarak tüm belgeleri silme
Aşağıda, Apache Solr dizinine belge eklemek için Java programı verilmiştir. Bu kodu adıyla bir dosyaya kaydedinUpdatingDocument.java.
import java.io.IOException;
import org.apache.Solr.client.Solrj.SolrClient;
import org.apache.Solr.client.Solrj.SolrServerException;
import org.apache.Solr.client.Solrj.impl.HttpSolrClient;
import org.apache.Solr.common.SolrInputDocument;
public class DeletingAllDocuments {
public static void main(String args[]) throws SolrServerException, IOException {
//Preparing the Solr client
String urlString = "http://localhost:8983/Solr/my_core";
SolrClient Solr = new HttpSolrClient.Builder(urlString).build();
//Preparing the Solr document
SolrInputDocument doc = new SolrInputDocument();
//Deleting the documents from Solr
Solr.deleteByQuery("*");
//Saving the document
Solr.commit();
System.out.println("Documents deleted");
}
}
Terminalde aşağıdaki komutları çalıştırarak yukarıdaki kodu derleyin -
[Hadoop@localhost bin]$ javac DeletingAllDocuments
[Hadoop@localhost bin]$ java DeletingAllDocuments
Yukarıdaki komutu çalıştırdığınızda, aşağıdaki çıktıyı alacaksınız.
Documents deleted