簡體   English   中英

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

[英]Django Haystack-Xapian search fails with special characters and spaces

我正在開發一個現有的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

免責聲明:我是Xapian-Haystack的(新)維護者。

我相信你所報告的內容與Xapian-Haystack如何將字符串解析為可索引的搜索術語有關:因為它使用了Xapian默認生成器,它忽略了特殊字符,你無法搜索特殊字符,因為它們甚至沒有被索引。

例如,字符串"^ best-seller"被索引為: "best""seller" :對"^"的搜索或"^ best-seller"上的精確搜索將失敗。

這已經解決了 :現在應該支持所有特殊字符。

空間永遠不會被索引,因為在Xapian-Haystack(或Haystack)中,因為它是單詞分隔符。

雖然我暫時不建議在制作中使用制作大師,但也許這可以回答你的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM