2010-07-08 17 views

Trả lời

11

Trên UNIX/Linux, cron jobs là bạn của bạn! Trên Windows, có Task Scheduler.

CẬP NHẬT
Để làm điều đó từ mã Java, vì đây là một yêu cầu GET đơn giản, bạn có thể sử dụng thư viện HTTP Client. Xem this tutorial về cách sử dụng GetMethod.

Nếu bạn cần gửi các yêu cầu khác tới Solr theo chương trình, có thể bạn nên sử dụng Solrj library. Nó cho phép để gửi tất cả các lệnh cơ bản để Solr kiến ​​nó có thể được cấu hình để truy cập vào bất cứ xử lý Solr:

CommonsHttpSolrServer server = new CommonsHttpSolrServer("http://localhost:8983/solr"); 
ModifiableSolrParams params = new ModifiableSolrParams(); 
params.set("command", "full-import"); 
QueryRequest request = new QueryRequest(params); 
request.setPath("/dataimport"); 
server.request(request); 
+0

Cảm ơn Pascal. Câu hỏi của tôi khác. Tôi cần kích hoạt lệnh http: // : /solr/dataimport? Command = full-import cho thao tác lập chỉ mục. Làm thế nào tôi có thể làm điều đó bằng cách sử dụng một lớp java? (như chống gõ trong lệnh trong cửa sổ trình duyệt?) – Eldo

+0

xem các cập nhật của tôi trong câu trả lời –

+4

Ngoài ra, nếu bạn đang làm điều đó từ cron, một wget http://127.0.0.1:8983/solr/dataimport?command=full-import hoạt động tuyệt vời! –

7

tôi đã có thể làm cho nó hoạt theo các bước:

  1. Tạo lớp ApplicationListener, HTTPPostScheduler và SolrDataImportProperties (mã nguồn được liệt kê trên http://wiki.apache.org/solr/DataImportHandler#Scheduling). Tôi tin rằng các lớp học này chưa được cam kết.

  2. Thêm người nghe sau đây để file web.xml Solr:

    <listener> 
        <listener-class>org.apache.solr.handler.dataimport.scheduler.ApplicationListener</listener-class> 
    </listener> 
    
  3. Configure dataimport.properties theo hướng dẫn trong trang wiki.

1

Có một bản vá tươi bởi Esteve Fernandez mà làm công việc toàn bộ điều trên Unix/Linux: https://issues.apache.org/jira/browse/SOLR-2305

@Eldo Nếu bạn đang đi để cần sự giúp đỡ nhiều hơn nữa trong việc xây dựng JAR của riêng bạn chỉ cần thả một câu hỏi đây ...

5

đơn giản thêm dòng này vào crontab của bạn với crontab -e lệnh:

0,30 * * * * /usr/bin/wget http://<solr_host>:8983/solr/<core_name>/dataimport?command=full-import 

chí này hoàn toàn nhập khẩu mỗi 30 phút. Thay thế <solr_host><core_name> bằng cấu hình

1

Đây là một chút cũ, nhưng tôi đã tạo ứng dụng Windows WPF và dịch vụ để giải quyết vấn đề này, như sử dụng công việc CRON và Task Scheduler hơi khó khăn để duy trì nếu bạn có nhiều lõi/môi trường.

https://github.com/systemidx/SolrScheduler

Bạn về cơ bản chỉ cần thả trong một tệp JSON trong một thư mục cụ thể và nó sẽ sử dụng một khách hàng REST để ban hành lệnh để Solr.

1

Chúng tôi có thể sử dụng Quartz để làm điều đó, giống như crontab trên Linux. Nhưng về cơ bản, TimerTask được nhúng trong jdk là đủ cho bạn.

Các vấn đề liên quan