2010-10-01 63 views
8

我已經閱讀了入門文檔和網上的其他幾個示例。 而這正是我的search_indexes.py樣子:在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) 

但是,當我搜索,我沒有得到任何結果。奇怪的是,如果我使用搜索短語「a」或任何其他單個字母,我會看到該死的東西中的每一個單詞都看起來像什麼。

無論如何...它在我看來像搜索引擎沒有在任何領域看。 :/

任何這條線之下是不太相關的(它的工作原理,相信我):


我的觀點:

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

你在用什麼搜索引擎?例如,如果它是Solr,您是否正確配置它以使用這些字段? – 2010-10-01 17:05:54

回答

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,它作品。