2009-12-22 22 views
6

Nguồn dữ liệu Solr của tôi là cơ sở dữ liệu SQL trong đó khóa chính là hợp chất (nghĩa là hai trường).Nhập đồng bằng Solr DIH với các phím ghép chính?

Điều này là tốt cho DIH query chính của tôi, tôi chỉ nối các trường và đó trở thành khóa chính của tôi Solr. Tuy nhiên nó không rõ ràng từ các tài liệu hướng dẫn như thế nào tôi muốn viết một truy vấn delta-import để hỗ trợ này.

Tài liệu cho thấy tôi cần hai truy vấn - một để tìm khóa chính của các hàng đã thay đổi và một truy vấn khác thực sự truy xuất từng tài liệu tương ứng với từng khóa đó. Không có ví dụ cho thấy điều này cho các phím phức hợp mặc dù.

Lý tưởng nhất Tôi không muốn những hai truy vấn riêng biệt ở tất cả, nó sẽ đặt ít tải trên cơ sở dữ liệu nếu hai truy vấn đã được chỉ đơn giản là kết hợp như rằng sự khác biệt duy nhất giữa querydeltaQuery là mệnh đề WHERE lọc dựa trên last_changed.

Vì vậy, nếu tôi chính query là:

SELECT key1 || key2 as pk FROM table 

Điều gì sẽ có liên quan deltaQuery (và/hoặc deltaImportQuery) như thế nào?

Tôi đã thử chỉ thêm mệnh đề WHERE nhưng sau khi truy vấn chạy, tôi nhận được cảnh báo về thiếu deltaImportQuery và sau đó là ngoại lệ con trỏ null.

Trả lời

-1

Có hai truy vấn cho deltaImport. Đầu tiên (deltaQuery) là để xác định những gì để lập chỉ mục. Ví dụ, trong đó chúng ta có thể định nghĩa ID nào chúng ta cần lập chỉ mục. Một trong những khác là để xác định dữ liệu từ id này. Hãy nhìn vào ví dụ của tôi, hy vọng, nó sẽ giúp bạn:

<entity name="address" pk="address_id" query="SELECT * FROM address a" deltaImportQuery="SELECT * FROM address a where a.address_id > ${dataimporter.delta.id}" 
      deltaQuery="select address_id as id from address where address_id=101010"> 

Phần quan trọng của deltaImportQuery là $ {dataimporter.delta.id}. Đây là cách chúng tôi đặt id của chúng tôi từ deltaQuery thành deltaImportQuery.

+0

cảm ơn, nhưng bạn có thực sự đọc câu hỏi không? – Alnitak

+0

Tất nhiên, trước khi bạn chỉnh sửa nó. – Yurish

+0

thực sự tôi chưa bao giờ chỉnh sửa nó ... – Alnitak

0

Đặt deltaQuery của bạn để "chọn 1" sẽ kích hoạt deltaImportQuery sau đó chỉ cần viết deltaImportQuery của bạn với '$ {dataimporter.last_index_time}' trong mệnh đề where

nên deltaQuery = "chọn 1" deltaImportQuery = "select * from a_table where lastUpdated> '$ {dataimporter.last_index_time}'"

3
query="SELECT key1 || key2 as id, ...other fields FROM table" 

deltaImportQuery="SELECT key1 || key2 as id, ... other fields 
        FROM table 
        where key1 = '${dataimporter.delta.key1}' 
        and key2 = '${dataimporter.delta.key2}'" 

deltaQuery="SELECT key1 || key2 as id, key1, key2 
      FROM table 
      WHERE lastUpdated > '${dataimporter.last_index_time}'" 

Giả sử key1 và key2 là văn bản. Các dấu nháy đơn quanh $ {dataimporter.delta.key2} sẽ không cần thiết nếu key2 là số ví dụ.

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