Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django haystack:如何在我的设置中启用高亮显示?_Python_Django_Django Haystack - Fatal编程技术网

Python Django haystack:如何在我的设置中启用高亮显示?

Python Django haystack:如何在我的设置中启用高亮显示?,python,django,django-haystack,Python,Django,Django Haystack,我目前正在使用和作为后端向Django应用程序添加搜索功能。到目前为止,创建索引并返回搜索结果效果良好。现在我想启用突出显示功能,但无法使其工作 我使用的是一个高度定制的设置,haystack文档对其帮助不大。我的Django应用程序是一个纯AJAX应用程序,也就是说,客户端和服务器之间的所有请求都是使用jQuery和$.AJAX()异步处理的。这就是我编写自定义Django视图的原因,该视图手动创建haystack搜索查询集,并将搜索结果转储到JSON对象中。所有这些都很好,但添加高亮显示不起

我目前正在使用和作为后端向Django应用程序添加搜索功能。到目前为止,创建索引并返回搜索结果效果良好。现在我想启用突出显示功能,但无法使其工作

我使用的是一个高度定制的设置,haystack文档对其帮助不大。我的Django应用程序是一个纯AJAX应用程序,也就是说,客户端和服务器之间的所有请求都是使用jQuery和
$.AJAX()
异步处理的。这就是我编写自定义Django视图的原因,该视图手动创建haystack搜索查询集,并将搜索结果转储到JSON对象中。所有这些都很好,但添加高亮显示不起作用。以下是我目前掌握的代码:

搜索索引.py

class CrawledWebpageIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)

    def get_model(self):
        return CrawledWebpage # This is my Django model
class HaystackSearchForm(forms.Form):

    q = forms.CharField(
        max_length=100,
        label='Enter your search query')
forms.py

class CrawledWebpageIndex(indexes.SearchIndex, indexes.Indexable):
    text = indexes.CharField(document=True, use_template=True)

    def get_model(self):
        return CrawledWebpage # This is my Django model
class HaystackSearchForm(forms.Form):

    q = forms.CharField(
        max_length=100,
        label='Enter your search query')
views.py(我采用了来自的一些代码,因为它看起来很合理,但可能是错误的)

只要搜索结果返回正确,这段代码就可以正常工作。但当我尝试访问突出显示的文本片段以获得搜索结果时,例如第一个搜索结果:

print search_results[0].highlighted
然后我总是得到一个空字符串作为结果:
{'text':['']}


有人能帮我让突出显示功能正常工作吗?非常感谢您。

我对Haystack不太熟悉,但可能是因为您在一个地方使用了
HaystackSearchForm
,而在另一个地方使用了
HighlightedSearchForm

看起来这可能是一个Haystack bug,已经很久没有解决了:

作为替代方案,您可以使用Haystack的突出显示功能而不是Whoosh来突出显示结果。例如,一旦您在
sqs
中获得搜索结果,您就可以

from haystack.utils import Highlighter
highlighter = Highlighter(search_query)
print highlighter.highlight(sqs[0].text)

以获取第一个结果的突出显示文本。有关文档,请参阅。

您好!你用的是哪个干草堆后端?@Emily我用Whoosh作为后端。我在原来的帖子里已经说过了。我知道Whoosh支持突出显示,所以导致我的问题的不是错误的后端。抱歉,问题中遗漏了这一点。似乎你不是唯一一个出现此问题的人?也许吧,但我现在不这么认为,因为搜索结果返回正确。如果你只知道用
HighlightedSearchForm
就可以实现同样的效果,我很好奇。它与
SearchForm
一样,只是增加了突出显示,请阅读文档。你不会说。;)我已经做到了。如果它对我有帮助,我就不会在这里问了。实际上,Haystack提供了表单应该从中继承的表单,而不是
表单。表单
。我想你想要的是
HighlightedSearchForm
。事实上,我应该先浏览GitHub上的公开问题。那显然不是我的错。我刚刚试用了Haystack的突出显示功能,效果很好。所以我会同意的。再次感谢你,艾米丽!:)