2010-10-01 20 views
8

İnternette alıştırma dökümantasyonunu ve diğer birkaç örneği okudum.Django Haystack aramasında sonuç bulunamadı

from haystack.indexes import * 
from haystack import site 
from models import Entry 

class EntryIndex(SearchIndex): 
    text = CharField(document=True) 
    headline = CharField(model_attr='headline') 
    subheadline = CharField(model_attr='subheadline') 
    category = CharField(model_attr='category__name') 

    author = CharField(model_attr='get_author') 
    email = CharField(model_attr='get_email') 

    tags = CharField(model_attr='tags') 

    content = CharField(model_attr='content') 

    def get_queryset(self): 
     return Entry.objects.exclude(dt_published=None).order_by('-is_featured', '-dt_published', '-dt_written', 'headline') 

site.register(Entry, EntryIndex) 

Ama arama yaparken, hiçbir sonuç alın: Ve bu benim search_indexes.py neye benzediği. Garip bir şekilde, 'a' ya da herhangi bir başka harf, 'u kullanırsam, lanet şeydeki her girişe benzeyen bir şey bulurum.

Her neyse ... Bana arama motorunun herhangi bir alana bakmadığı gibi görünüyor. Bu çizginin altına

şey daha az alakalı olduğunu

/(Çalışır, bana güven):


Bence:

from haystack.views import SearchView 

class CustomSearchView(SearchView): 
    def __name__(self): 
     return "CustomSearchView" 

    def extra_context(self): 
     return common(self.request) 

def search(request): 
    return CustomSearchView(template='news/search_results.html')(request) 

Ve search_results.html:

{% extends "content.html" %} 
{% load tagging_tags %} 
{% load highlight %} 


{% block title %}Viðskiptablaðið - Leitarniðurstöður{% endblock %} 

{% block left_content %} 

<h2>Search</h2> 

<form method="get"> 
    <table> 
     {{ form.as_table }} 
     <tr> 
      <td>&nbsp;</td> 
      <td> 
       <input type="submit" value="Search"> 
      </td> 
     </tr> 
    </table> 

    {% if query %} 
     <h3>Results</h3> 

     {% for result in page.object_list %} 
      {% highlight result.summary with request.GET.q %} 
      {% highlight result.object.headline with request.GET.q %} 
      <p> 
       <a href="{{ result.object.get_absolute_url }}">{{ result.object.headline }}</a> 
      </p> 
     {% empty %} 
      <p>No results found.</p> 
     {% endfor %} 

     {% if page.has_previous or page.has_next %} 
      <div> 
       {% if page.has_previous %}<a href="?q={{ query }}&amp;page={{ page.previous_page_number }}">{% endif %}&laquo; Previous{% if page.has_previous %}</a>{% endif %} 
       | 
       {% if page.has_next %}<a href="?q={{ query }}&amp;page={{ page.next_page_number }}">{% endif %}Next &raquo;{% if page.has_next %}</a>{% endif %} 
      </div> 
     {% endif %} 
    {% else %} 
     {# Show some example queries to run, maybe query syntax, something else? #} 
    {% endif %} 
</form> 

{% endblock %} 
+0

Hangi arama motorunu kullanıyorsunuz? Örneğin Solr ise, bu alanları kullanmak için doğru şekilde yapılandırdınız mı? –

cevap

11

Tamam, bu belgelerde var ama yeterince açık değil hissediyorum.

Tamam, yeterince ağlıyor:

Ne yapmak zorunda nasılsa veri aranacak beyan etmektir (...

headline = CharField(model_attr='headline') 
subheadline = CharField(model_attr='subheadline') 

vb ben bu bütün mesele olduğunu düşünüyorum).

yapmanız gereken tek şey

benim durumumda, ardından

text = CharField(document=True, use_template=True) 

ve bir şablon yapmak geçerli:

arama/endeksler/haber/entry_text.txt

{{ object.headline }} 
{{ object.subheadline }} 
{{ object.get_author }} 
{{ object.get_email }} 
{{ object.category.name }} 
{{ object.tags }} 
{{ object.content }} 

Beautiul, bu Eserleri.

İlgili konular