편집 : 게시물의 하단에서 더 많은 정보를 원하시면 ...장고 건초 더미 및 붕 검색 작업,하지만 SearchQuerySet 반환 0 결과
원래 질문 :
내가이에서와 같은 문제가있을 것 같다 (미해결) 질문 : django-haystack + Whoosh SearchQuerySet().all() always None
내가 내 장고 프로젝트에 붕과 건초 더미을 설정 한 모든 처음에는 잘 작동했다 (SearchQuerySet 결과를 반환하는 데 사용), 그러나 새로운 사용자 정의 검색 양식을 만들 수있는 중단 시도 후 (git에서 롤백 됨) 나타납니다. 해당 색인 생성 및 원래 검색 페이지는 여전히 정상적으로 작동하지만 SearchQuerySet()은 항상 0 개의 결과를 반환합니다.
실행 :
manage.py rebuild_index --verbosity=2
올바르게 보여줍니다
Indexing 14 assets
indexed 1 - 14 of 14 (worker PID: 1234).
이 색인 자산은 모든이 될 수는 정확하게 원래의 검색 폼에서의 검색.
그러나, 개방 장고 쉘과 실행은 :
from haystack.query import SearchQuerySet
SearchQuerySet().all().count()
항상 0
를 반환!
관련 pip freeze
:
- 파이썬 3.5.2
- 장고 1.9.3
- 장고 - 건초 더미 2.5.0
- 붕 2.7.4
/MyApp를/search_indexes .py :
from haystack import indexes
from .models import Asset
class AssetIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.NgramField(document=True, use_template=True)
asset_description = indexes.CharField(model_attr='asset_description')
manufacturer = indexes.CharField(model_attr='asset_manufacturer')
def get_model(self):
return Asset
def no_query_found(self):
return self.searchqueryset.exclude(content='foo')
def index_queryset(self, using=None):
return self.get_model().objects.all()
,451,515,
/myapp/templates/search/indexes/myapp/asset_text.txt :
{{ object.asset_description }}
{{ object.asset_details }}
{{ object.asset_manufacturer }}
{{ object.asset_model }}
... etc.
/myapp/urls.py :
urlpatterns = [
....
url(r'^search/', include('haystack.urls')),
....
]
편집 :
그래서 파고 Haystack 소스 코드는 어디에서 0이 왔는지 알았지 만 이유는 아닙니다!
/myvenv/Lib/site-packages/hackstack/query.py
class SearchQuerySet(object):
...
def __len__(self):
if self._result_count is None:
self._result_count = self.query.get_count()
# Some backends give weird, false-y values here. Convert to zero.
if not self._result_count:
self._result_count = 0
# This needs to return the actual number of hits, not what's in the cache.
return self._result_count - self._ignored_result_count
....
어떤 INT에 0
변경 SearchQuerySet는 항상 INT를 반환하게,하지만 if not self._result_count
사실이 왜 나는 아직도 모른다 ...