python – Django Haystack-Xapian搜索失败,包含特殊字符和空格

我正在开发一个现有的Django项目,它使用带有xapian后端的haystack来实现全局搜索功能.然而,当我搜索一些特殊字符,例如&时,搜索似乎失败了.和空间等我试过,但找不到解决方法.

有没有办法可以逃脱这些角色并使搜索工作?我在后端使用PostgreSQL.任何指针都会非常有用.

更新:搜索功能使用SearchForm,查询字符串位于from的q字段中.这在代码中使用如下.

sqs = self.searchqueryset.auto_query(self.cleaned_data['q'])

我尝试过使用:

sqs = self.searchqueryset.filter(self.cleaned_data['q'])

sqs = self.searchqueryset.filter(content=Clean(self.cleaned_data['q']))

没有运气.我仍然无法搜索空格和特殊字符,如&amp ;.

最佳答案 转义取决于你如何使用Haystack,但是,haystack.inputs.Clean类可能正是你要找的.只要传递你要搜索的内容:

q = "amp & sand"
q_clean = haystack.inputs.Clean(q)
sqs = SearchQuerySet().filter(content=q_clean)

请参阅此处的文档:http://django-haystack.readthedocs.org/en/latest/inputtypes.html#clean

点赞