2016-07-19 5 views
2

Google 애플리케이션에서 색인 생성 및 검색을 위해 Haystack과 Whoosh를 사용하려고합니다. 색인을 다시 작성할 때 다음 결과가 표시됩니다.Django-Haystack + Whoosh - 비어있는 색인 이후 rebuild_index

모든 문서가 제거되었습니다. 백엔드 업데이트 중 : 기본 기본값 : 백엔드 은 다시 빌드 할 필요가 없습니다.

를이 내 경우 Searchindex 클래스 건너 뛰기 :

class BlogIndex(indexes.SearchIndex, indexes.Indexable): 
    text = indexes.CharField(document=True, use_template=True, template_name="snip_text.txt") 
    headline = indexes.CharField(model_attr="headline", null=True) 
    body = indexes.CharField(model_attr="body") 


    def get_model(self): 
     return Snip 

    def index_queryset(self, using=None): 
     """Used when the entire index for model is updated.""" 
     return self.get_model().objects.filter(date__lte=timezone.now()) 

이 (템플릿/검색/색인/MyApp를에 위치 /) 내 blog_text.txt 파일입니다 : 내가 추가

{{ object.headline }} 
{{ object.body }} 

haystack을 INSTALLED_APPS 및 해당 설정 파일에 저장합니다. 내 DB는 sqlite입니다 (개발 용 ...).

내가 뭘 잘못하고 있니?

감사합니다.

R

이 같은 관리 명령 (당신이 원하는대로 파일 이름 - 예 : my_update_index.py)을 작성

UPDATE

from haystack.management.commands import update_index 

class Command(update_index.Command): 
    pass 

가 clear_index 명령에 대한 동일한 작업을 수행합니다.

rebuild_index 명령은 clear_index와 update_index를 호출합니다. 따라서 새 재구성 명령을 만들더라도 작동하지 않습니다 (잘못된 명령을 찾음).

인덱스를 다시 작성하려면 두 명령을 모두 실행하십시오. 그렇지 않으면 update_index 명령을 실행하십시오.

또 하나의주의 사항 : 템플릿 txt 파일의 폴더 이름은 색인하려고하는 모델과 정확히 같아야합니다. (색인 클래스에서 어디에서 썼는지는 중요하지 않습니다.).

물론, 신용 난 당신이 할미새뿐만 아니라 프로젝트에 설치되어 있는지 베팅하고

답변

4

@solarissmoke하는 - 즉 Backend doesn't require rebuild가 어디에서 오는이기 때문이다.

문제는 Wagtail이 Haystack이 가지고있는 관리 명령과 충돌하는 update_index 관리 명령을 정의한다는 것입니다 (rebuild_indexupdate_index). 인덱스를 다시 작성하려고하면 Haystack 대신 Wagtail 명령이 호출됩니다. 해당 명령은 마지막으로로드되고 할미새 것들을 대체합니다 -

신속하고 더러운 솔루션은 INSTALLED_APPS에서 wagtailhaystack이 올 있는지 확인하는 것입니다.

다른 방법으로 Haystack의 rebuild_index 코드를 래핑하는 자체 관리 명령을 작성해야합니다.

+0

당신은 절대적으로 옳았습니다. 그러나 나는 두 가지를 시도했지만 여전히 성공하지 못했습니다. 어쩌면 나는 틀린 일을했습니다 ... 나는 import와'class Command (rebuild_index.Command) : pass'를 가지고 blog_rebuild.py라는 파일을 만듭니다. – Rani

+0

'update_index'에 대해서도 똑같이해야합니다 - 이것은 Haystack의'rebuild_index '. – solarissmoke

+0

그것은 작동합니다! 내 blog_rebuild는 여전히 아무것도하지 않지만 blog_update_index.py는 작동합니다. 괜찮습니까? – Rani