Apache Solr - Xóa tài liệu

Xóa tài liệu

Để xóa tài liệu khỏi chỉ mục của Apache Solr, chúng ta cần chỉ định ID của tài liệu sẽ bị xóa giữa các thẻ <delete> </delete>.

<delete>   
   <id>003</id>   
   <id>005</id> 
   <id>004</id> 
   <id>002</id> 
</delete>

Ở đây, mã XML này được sử dụng để xóa các tài liệu có ID 003005. Lưu mã này trong một tệp có têndelete.xml.

Nếu bạn muốn xóa các tài liệu khỏi chỉ mục thuộc về lõi có tên my_core, sau đó bạn có thể đăng delete.xml tập tin bằng cách sử dụng post như hình bên dưới.

[Hadoop@localhost bin]$ ./post -c my_core delete.xml

Khi thực hiện lệnh trên, bạn sẽ nhận được kết quả sau.

/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

xác minh

Truy cập trang chủ của giao diện web Apache Solr và chọn cốt lõi là my_core. Cố gắng truy xuất tất cả các tài liệu bằng cách chuyển truy vấn “:” vào vùng văn bảnqvà thực hiện truy vấn. Khi thực thi, bạn có thể thấy rằng các tài liệu được chỉ định sẽ bị xóa.

Xóa trường

Đôi khi chúng ta cần xóa tài liệu dựa trên các trường khác ngoài ID. Ví dụ, chúng tôi có thể phải xóa các tài liệu có thành phố là Chennai.

Trong những trường hợp như vậy, bạn cần chỉ định tên và giá trị của trường trong cặp thẻ <query> </query>.

<delete> 
   <query>city:Chennai</query> 
</delete>

Lưu nó thành delete_field.xml và thực hiện thao tác xóa trên lõi có tên my_core sử dụng post công cụ của Solr.

[Hadoop@localhost bin]$ ./post -c my_core delete_field.xml

Khi thực hiện lệnh trên, nó tạo ra kết quả sau.

/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

xác minh

Truy cập trang chủ của giao diện web Apache Solr và chọn cốt lõi là my_core. Cố gắng truy xuất tất cả các tài liệu bằng cách chuyển truy vấn “:” vào vùng văn bảnqvà thực hiện truy vấn. Khi thực thi, bạn có thể thấy rằng các tài liệu có chứa cặp giá trị trường được chỉ định sẽ bị xóa.

Xóa tất cả tài liệu

Cũng giống như xóa một trường cụ thể, nếu bạn muốn xóa tất cả các tài liệu khỏi một chỉ mục, bạn chỉ cần chuyển ký hiệu “:” vào giữa các thẻ <query> </ query>, như hình dưới đây.

<delete> 
   <query>*:*</query> 
</delete>

Lưu nó thành delete_all.xml và thực hiện thao tác xóa trên lõi có tên my_core sử dụng post công cụ của Solr.

[Hadoop@localhost bin]$ ./post -c my_core delete_all.xml

Khi thực hiện lệnh trên, nó tạo ra kết quả sau.

/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

xác minh

Truy cập trang chủ của giao diện web Apache Solr và chọn cốt lõi là my_core. Cố gắng truy xuất tất cả các tài liệu bằng cách chuyển truy vấn “:” vào vùng văn bảnqvà thực hiện truy vấn. Khi thực thi, bạn có thể thấy rằng các tài liệu có chứa cặp giá trị trường được chỉ định sẽ bị xóa.

Xóa tất cả các tài liệu bằng Java (API ứng dụng khách)

Sau đây là chương trình Java để thêm tài liệu vào chỉ mục Apache Solr. Lưu mã này trong một tệp có tênUpdatingDocument.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"); 
   } 
}

Biên dịch đoạn mã trên bằng cách thực hiện các lệnh sau trong terminal:

[Hadoop@localhost bin]$ javac DeletingAllDocuments 
[Hadoop@localhost bin]$ java DeletingAllDocuments

Khi thực hiện lệnh trên, bạn sẽ nhận được kết quả sau.

Documents deleted