2012-02-19 4 views
0

사이트의 검색 엔진 부분을 구축하기 위해 Haystack과 Whoosh를 사용하고 있습니다. Whoosh는 내 경우에 아주 잘 작동하지만 내 조회에서 추가 정보를 표시하려면 검색 결과에 따라 다릅니다.Whoosh로보기 사용자 정의

dummy = "dummy" 
    return render_to_response('images/ib_large_image.html', {'dummy': dummy}, 
          context_instance=RequestContext(request)) 

그래서, 기본적으로 내가 검색 템플릿에 내 변수를 표시하기 위해 검색의보기를 개인화하려는 내 장고보기에서

내가 더미가 정보를 보여주는 것입니다 같은 것을 사용합니다.

설정 :

HAYSTACK_CONNECTIONS = { 
    'default': { 
    'ENGINE': 'haystack.backends.whoosh_backend.WhooshEngine', 
    'PATH': os.path.join(os.path.dirname(__file__), 'whoosh_index'), 
    'DEFAULT_OPERATOR': 'AND', 
    'SITECONF': 'search_sites', 
    'SEARCH_RESULTS_PER_PAGE': 20 
     }, 
    } 

search_sites.py :

import haystack 
    haystack.autodiscover() 

검색> 색인> 이미지 보드> image_text.txt : 여기

일부 구성입니다

{{ object.name }} 
    {{ object.description }} 

이미지 보드> search_indexes.py :

import datetime 
    from haystack import indexes 
    from imageboard.models import Image 

    class ImageIndex(indexes.SearchIndex, indexes.Indexable): 
     text = indexes.CharField(document=True, use_template=True) 

     def get_model(self): 
      return Image 

     def index_queryset(self): 
      """Used when the entire index for model is updated.""" 
      return self.get_model().objects.filter(uploaded_date__lte=datetime.datetime.now()) 

이미지 보드> urls.py :

urlpatterns = patterns('imageboard.views', 
    (r'^search/', include('haystack.urls')), 
    ) 

는이 같은 내 시야를 구성,하지만 작동하지 않습니다

이미지 보드 > views.py :

from haystack.views import SearchView 
    def search(request): 
     return SearchView(template='search.html')(request) 

+0

'작동하지 않음'을 확장 할 수 있습니까? – Spacedman

+0

글쎄, 내 문제를 해결. 모델을 재구성했고 검색 엔진을 만질 필요가 없습니다. 어쨌든 고마워. –

답변

0

건초 더미 "StoredFields"을 살펴 보시기 바랍니다. 검색 결과보기에서 검색 색인에 액세스해야하는 모든 정보를 저장합니다. 특별한 이점은 검색 결과보기가 내용을 렌더링하기 위해 DB에 접근 할 필요가 없다는 것입니다. 또한, 템플릿 이름을 검색 내부

class ImageIndex(indexes.SearchIndex, indexes.Indexable): 
    rendered = CharField(use_template=True, indexed=False) 

그런 다음 저장 필드에 각 검색 결과에 대한 출력을 사전 렌더링 할 수/인덱스/MyApp를/image_rendered.txt :

<h2>{{ object.title }}</h2> 

<p>{{ object.content }}</p> 

그리고 마지막으로 , 검색/search.html :

... 

{% for result in page.object_list %} 
    <div class="search_result"> 
     {{ result.rendered|safe }} 
    </div> 
{% endfor %} 
+0

의견을 보내 주셔서 감사합니다. 나는 Haystack/woosh 행동을 바꾸지 않고 내 모델을 변경하는 문제를 해결했다. 어쨌든 답해 주셔서 감사합니다. –