gpt4 book ai didi

django - Django Haystack 搜索中没有结果

转载 作者:行者123 更新时间:2023-12-02 09:58:02 25 4
gpt4 key购买 nike

我已经阅读了入门文档和网络上的其他几个示例。这就是我的 search_indexes.py 的样子:

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 %}

最佳答案

好的,文档里有,但我觉得还不够清楚。

你要做的是以某种方式声明要搜索的数据(我认为这就是整个要点:

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

等等...)

好了,哭够了。

你所要做的就是

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

然后制作一个模板,就我而言:

搜索/indexes/news/entry_text.txt

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

漂亮,它有效。

关于django - Django Haystack 搜索中没有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3841084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com