4

グローバル検索機能に xapian バックエンドで haystack を使用する既存の Django プロジェクトに取り組んでいます。ただし、&やスペースなどの特殊文字を使用して検索すると、検索が失敗するようです。試してみましたが、修正する方法が見つかりませんでした。

これらの文字をエスケープして検索を機能させる方法はありますか? バックエンドで 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']))

運がない。スペースや & などの特殊文字で検索することはまだできません。

4

2 に答える 2

1

エスケープは、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

于 2014-03-15T21:25:38.430 に答える