2012-06-28 33 views
6

Tệp cấu hình cho SolR DataImportHandler chứa các truy vấn SQL để chạy với cơ sở dữ liệu, cách ánh xạ các cột kết quả đến trường tài liệu SolR và tất nhiên, các tham số cần thiết để kết nối với cơ sở dữ liệu. Trong dự án của chúng tôi, các tham số kết nối cơ sở dữ liệu (cụ thể là mật khẩu cơ sở dữ liệu) thay đổi từ môi trường sang môi trường, buộc chúng tôi phải duy trì một bản sao hơi khác nhau của toàn bộ tệp XML cấu hình cho từng môi trường.Solr DataImport: quản lý cấu hình cho các môi trường khác nhau (phát triển/dàn dựng/sản xuất)

Có cách nào để cấu hình các tham số kết nối cơ sở dữ liệu (đặc biệt là mật khẩu) riêng biệt với các câu lệnh và khai báo SQL, vì vậy mỗi cấu hình được duy trì một lần và chỉ một lần?

Trả lời

2

đây là sự cố đã biết trong Solr.

Nếu bạn nhìn vào tài liệu Solr, hoặc tại cuốn sách Solr Entreprise Server, họ nói bạn có thể sử dụng core1.properties với khóa = giá trị và khóa sử dụng trong tệp cấu hình xml của bạn ... nhưng theo kinh nghiệm của tôi, không làm việc. Tôi đã thử nó một số cách, có những câu hỏi mở trên danh sách gửi thư solr về việc này.

Vì vậy, bạn phải sử dụng giải pháp thay thế xấu (như sử dụng tệp mẫu xml và thay thế # mật khẩu # bằng mật khẩu thực, v.v.).

+0

Tôi biết chắc chắn bạn có thể vượt qua các thông số thông qua url dataimport, nhưng điều đó hút quá cho mật khẩu tôi đoán ... – javanna

+0

Cảm ơn javanna. Nó hút, nhưng nó sẽ làm việc cho chúng ta trong trường hợp này. – jsalvata

4

Thực tế việc này có thể được thực hiện bằng cách sử dụng cấu hình solr chuẩn.

Trước tiên, bạn cần phải xác định nguồn dữ liệu của bạn trong solrconfig.xml [Xem Adding Datasource in Solrconfig]

Thứ hai, bạn có thể biểu lộ cấu hình DIH thành một file riêng biệt sử dụng XInclude

tôi sử dụng phương pháp này vừa để sử dụng địa phương tập tin cấu hình và tập trung các kết nối qua các lõi khác nhau.


Ví dụ: Trong solrconfig.xml, thêm:

<xi:include href="../../common-config/local.dih.xml" xmlns:xi="http://www.w3.org/2001/XInclude" /> 

local.dih.xml sẽ giống như thế:

<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> 
    <lst name="defaults"> 
    <str name="config">data-config.xml</str> 
    <lst name="datasource"> 
     <str name="name">mongo</str> 
     <str name="type">MongoDataSource</str> 
     <str name="database">myMongoDb</str> 
    </lst> 
    <lst name="datasource"> 
     <str name="name">psql</str> 
     <str name="driver">org.postgresql.Driver</str> 
     <str name="type">JdbcDataSource</str> 
     <str name="url">jdbc:postgresql://localhost:5432/myPsqlDb</str> 
     <str name="user">dbUser</str> 
     <str name="password">dbPassword</str> 
    </lst> 
    </lst> 
</requestHandler> 
+0

Cảm ơn bạn! Đó là những gì tôi đã tìm kiếm. – Oyeme

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