2010-10-01 15 views
8

मैंने वेब पर प्रलेखन शुरू करने और कई अन्य उदाहरणों को पढ़ा है।Django Haystack खोज में कोई परिणाम नहीं

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) 

लेकिन जब मैं खोज, मुझे कोई परिणाम प्राप्त: और ये मेरे search_indexes.py कैसा दिखता है। आश्चर्यजनक रूप से अगर मैं खोज वाक्यांश 'ए' या किसी अन्य एकल अक्षर का उपयोग करता हूं, मुझे लगता है कि लापरवाही में प्रत्येक प्रविष्टि की तरह दिखता है।

वैसे भी ... ऐसा लगता है कि खोज इंजन किसी भी क्षेत्र में नहीं दिख रहा है। :/

इस रेखा से नीचे

कुछ भी कम प्रासंगिक है (यह काम करता है, मुझ पर भरोसा):


मेरा विचार:

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) 

और 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

आप किस खोज इंजन का उपयोग कर रहे हैं? उदाहरण के लिए यदि यह सौर है, तो क्या आपने उन फ़ील्ड का उपयोग करने के लिए इसे ठीक से कॉन्फ़िगर किया है? –

उत्तर

11

ठीक है, यह प्रलेखन में है लेकिन मुझे लगता है कि यह पर्याप्त स्पष्ट नहीं है।

आप क्या करना है की घोषणा करने के किसी भी तरह डेटा की खोज की जा रही है (मैंने सोचा कि के पूरे मुद्दे था:

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

आदि ...)

ठीक है, काफी रो रही।

आपको बस इतना करना है मेरे मामले में

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

और फिर एक टेम्पलेट बनाते हैं,:

खोज/अनुक्रमित/समाचार/entry_text.txt

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

beautiul, यह काम करता है।

संबंधित मुद्दे