django アプリで Xapian と Haystack を使用しています。検索用にインデックスを付けたいテキスト フィールドを含むモデルがあります。このフィールドは、単語、URL、html など、あらゆる種類の文字を格納するために使用されます。
デフォルトのドキュメント ベースのインデックス テンプレートを使用しています。
text = indexes.CharField(document=True, use_template=True)
これにより、誰かが特に長いリンクを貼り付けたときに、次のエラーが発生することがあります。
InvalidArgumentError: Term too long (> 245)
今、私はエラーを理解しています。他の状況の他のフィールドについては、以前に回避しました。
私の質問は、この例外を処理するための好ましい方法は何ですか?
この例外を処理するには、prepare_text() メソッドを使用する必要があるようです。
def prepare_text(self, obj):
content = []
for word in obj.body.split(' '):
if len(word) <= 245:
content += [word]
return ' '.join(content)
不格好で問題が発生しやすいようです。さらに、検索テンプレートを使用できません。
この問題をどのように処理しましたか?