2015-03-31 20 views
7

Tôi đang sử dụng django-haystack (v 2.3.1) với solr (v 5.0.0) và pysolr (v 3.0.0). Tôi đã theo dõi tutorial và đã thiết lập các tệp tương tự myapp/search_indexes.pysearch/indexes/myapp/mymodel_text.txt.django-haystack: Không thể thêm tài liệu vào Solr: [Lý do: Lỗi 404 Không tìm thấy]

./manage.py build_solr_schema > schema.xml hoạt động tốt và tôi đã sao chép điều này thành $ SOLR_HOME/conf/schema.xml.

Sự cố xảy ra khi tôi thử ./manage.py rebuild_index. Trước tiên, tôi được yêu cầu xác nhận:

CẢNH BÁO: Điều này sẽ loại bỏ tất cả mọi thứ khỏi chỉ mục tìm kiếm của bạn trong kết nối 'mặc định'.
Lựa chọn của bạn sau này là để khôi phục từ bản sao lưu hoặc xây dựng lại thông qua lệnh rebuild_index.
Bạn có chắc chắn muốn tiếp tục không? [Y/N] y

Sau đó, nó không thành công:

Loại bỏ tất cả các tài liệu từ chỉ số của bạn bởi vì bạn nói như vậy.
Không thể xóa chỉ mục Solr: [Lý do: Lỗi 404 Không tìm thấy]
Tất cả tài liệu đã bị xóa.
Indexing 6 tầng
Không thêm tài liệu để Solr: [Lý do: Lỗi 404 Not Found]

cài đặt kết nối của tôi là:

#settings.py 
HAYSTACK_CONNECTIONS = { 
    'default': { 
     'ENGINE': 'haystack.backends.solr_backend.SolrEngine', 
     'URL': 'http://127.0.0.1:8983/solr', 
    }, 
} 

Nếu tôi hướng đến url này tôi thể xem trang quản trị viên solr. Tôi đã chắc chắn rằng cổng 8983 được mở cho solr (cũng như 8000 cho máy chủ phát triển Django).

Tôi cảm thấy rằng tôi có thể không cung cấp đủ thông tin kết nối, nhưng còn gì khác để kiểm tra?

CẬP NHẬT:
Mặc dù tôi giải quyết vấn đề này là có nhiều hơn để đi, mà là tất cả cố định bởi sử dụng Solr (v.4.7.0) thay vào đó, như django-đống cỏ khô chưa sẵn sàng cho Solr 5 (có một vấn đề liên quan đến điều này, nhưng tôi không còn có thể tìm thấy nó trên github

Trả lời

4

Th anks để user366722 cho đề xuất để xác định cốt lõi trong các thiết lập. Tuy nhiên, tôi đã bỏ qua một bước cơ bản hơn nữa là tạo ra lõi!

Giải pháp:
Tạo lõi, xác định tên của lõi (ví dụ 'mặc định') và cổng (ví dụ8983):

$bin/solr create_core -c default -p 8983

Sau đó, chỉ cần chỉ định tên của lõi (ví dụ 'mặc định') trong cài đặt URL đống cỏ khô của bạn:

#settings.py 
HAYSTACK_CONNECTIONS = { 
    'default': { 
     'ENGINE': 'haystack.backends.solr_backend.SolrEngine', 
     'URL': 'http://127.0.0.1:8983/solr/default', 
    }, 
} 

Xong!

Bây giờ, tôi nhận được

Loại bỏ tất cả các tài liệu từ chỉ số của bạn bởi vì bạn nói như vậy.
Tất cả tài liệu đã bị xóa.
Indexing 3 tầng

CẬP NHẬT:
Tại thời điểm viết bài, tôi cũng chuyển sang Solr 4.7.0 để làm cho nó hoạt động, như đống cỏ khô là chưa sẵn sàng cho Solr 5.x

+0

bin/solr create_core -c mặc định -p 8983 bạn có thể cho tôi biết bin nào không? Cảm ơn –

+0

mà bin phụ thuộc vào nơi bạn đã cài đặt – ZG101

1

đã cùng một vấn đề và tìm thấy câu trả lời:. https://stackoverflow.com/a/29833997/366722 bạn cần phải xác định cốt lõi trong URL của bạn

+0

Bạn đang sử dụng phiên bản solr nào? Rõ ràng [cấu trúc của tệp solr.xml đã thay đổi] (https://wiki.apache.org/solr/Solr.xml%204.4%20and%20beyond): "Tóm lại, [như của vr.0 ] đã được thay thế bằng lõi tự động phát hiện. " Khi tôi từ bỏ vào thời điểm đó, tôi không chắc liệu django-haystack có thể tạo ra một tệp solr.xml tương thích cho v5 của solr (tức là không có ). – ZG101

+0

Đúng vậy. Tôi đang sử dụng 5.1.0 và thiết lập nó bằng cách sử dụng một tài liệu cũ của haystack sử dụng 4.x. – siavach

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