4

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)

不格好で問題が発生しやすいようです。さらに、検索テンプレートを使用できません。

この問題をどのように処理しましたか?

4

1 に答える 1