2012-02-19 4 views
0

Я использую Haystack и Whoosh для создания поисковой системы сайта. Whoosh отлично работает в моем случае, но мне нужно показать дополнительную информацию из моего представления, зависит от того, что нашел поиск.Настроить представление с Whoosh

На мой взгляд Django я использовать что-то вроде этого, где манекен является информация, чтобы показать:

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')), 
    ) 

Я настроил мой взгляд, как это, но он не работает:

imageboard > views.py:

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

Любая идея ??

+0

Можете ли вы расширить его, «это не работает»? – Spacedman

+0

Ну, я решил свою проблему. Я реорганизовал свою модель и не нуждаюсь в трогании поисковой системы. Спасибо, в любом случае. –

ответ

0

Предлагаю вам взглянуть на стог сена «StoredFields». Они хранят любую информацию, доступную вашему представлению результатов поиска в индексе поиска. Дополнительным преимуществом является то, что просмотры результатов поиска никогда не должны попадать в БД, чтобы отображать их содержимое. Кроме того, вы можете предварительно вынести вывод для каждого результата поиска в хранимую поле

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> 

И, наконец, , in search/search.html:

... 

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

Спасибо за ваше предложение, я проверю. Я решил проблему, не меняя поведение Haystack/woosh, но моя модель. Спасибо за ваш ответ. –

Смежные вопросы