2012-05-04 30 views
8

Tôi đang sử dụng Haystack cho tìm kiếm, và kết quả SearchQuerySet trở chứa None yếu tố:Haystack queryset chứa None yếu tố

>> SearchQuerySet().models(Question, Document, Idea) 
>> [<SearchResult: idea.idea (pk=3875)>, None, None, None] 

Chạy rebuild_index không giúp. Nếu tôi xóa cuộc gọi .models() khỏi dòng đầu tiên, sự cố sẽ biến mất. Tôi chỉ có thể lọc ra Không có yếu tố nào từ kết quả, nhưng tôi muốn biết liệu đây có phải là hành vi dự định không?

Tôi đang sử dụng Django 1,4 bất ngờ tới thăm, và Haystack 2.0.0-beta

+1

Tôi chưa thử, nhưng [anh chàng này] (https://groups.google.com/forum/?fromgroups#!searchin/django-haystack/none/django-haystack/XSjIr8wx3lA/7f82x2QJ9cUJ) đề xuất sử dụng Solr thay vì Whoosh. – simlmx

+0

Cập nhật: bây giờ tôi đã thử nó và nó hoạt động với Solr. – simlmx

+0

mọi người đều biết rằng tìm kiếm đàn hồi hoặc solr làm và hoạt động tốt hơn - nhưng đối với các trang web nhỏ đến cỡ trung bình, Whoosh là IMHO rất ổn và không gặp sự cố khi cài đặt/cài đặt (chỉ sau đó, haha). – benzkji

Trả lời

4

Tôi có vấn đề này khi chỉ số Haystack có hồ sơ mà không ghi tương ứng trong DB.

+3

Cảm ơn, đây không phải là vấn đề mặc dù. Nó chỉ ra các giá trị 'Không' tương ứng với các đối tượng User. Rõ ràng hàm _models_ loại bỏ các lần truy cập không thuộc loại mô hình phù hợp nhưng để lại một loại Không có thay vì lọc chúng ra – zimkies

+0

Bạn có thể nói, vấn đề này chỉ dành cho chương trình phụ trợ 'whoosh' không? Có sử dụng động cơ Solr giải quyết nó? – Daria

+1

Vì vậy, không có giải pháp cho Whoosh sau đó? – awidgery

1

Có vấn đề tương tự khi sử dụng Whoosh, cài đặt Elasticsearch và các phần tử None biến mất.

3

Không, đó chắc chắn không phải là hành vi dự định, và như tôi có thể thấy, dường như liên quan đến quyết định thiết kế trong Whoosh. Và, tính đến tháng 12 năm 2015, điều này vẫn có vẻ là một vấn đề, như có thể thấy here. Ngoài ra, tôi có thể tái tạo nó với thiết lập của tôi (django 1.8.5, haystack 2.4.1, Whoosh 2.7.0) - đó là lý do tại sao tôi đến đây.

giải pháp nhanh chóng và dơ bẩn mà làm việc cho tôi: Xác định một lĩnh vực mới về chỉ số của bạn (loại/mô hình/cà chua), thiết lập nó như nhau cho từng mô hình, và bộ lọc chống lại giá trị:

.filter(type='my_modelname')

thay vì

.models(MyModel).

Tôi không biết (chưa) cách tỷ lệ này, nhưng có vẻ hoạt động tốt.

+1

Cách giải quyết này hoạt động khá tốt! – mbo

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