我正在开发一个现有的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']))
没有运气.我仍然无法搜索空格和特殊字符,如& ;.
最佳答案 转义取决于你如何使用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