8

検索に Haystack を使用していますが、結果として返される SearchQuerySet には None 要素が含まれています。

>> SearchQuerySet().models(Question, Document, Idea)
>> [<SearchResult: idea.idea (pk=3875)>, None, None, None]

rebuild_index を実行しても役に立ちません。最初の行から .models() 呼び出しを削除すると、問題は解決します。結果から None 要素を除外することもできますが、これが意図した動作であるかどうかを知りたいですか?

Django 1.4、Whoosh、Haystack 2.0.0-beta を使用しています

4

3 に答える 3

5

干し草の山インデックスに、DB に対応するレコードがないレコードがある場合に、この問題が発生しました。

于 2012-05-05T12:02:38.060 に答える
3

いいえ、それは間違いなく意図した動作ではなく、私が見ることができるように、Whoosh の設計上の決定に関連しているようです。そして、2015 年 12 月の時点で、これはまだ問題のようです。また、私のセットアップ (django 1.8.5、haystack 2.4.1、Whoosh 2.7.0) で再現できます。これが、ここに来た理由です。

私のために働いた迅速で汚い解決策:インデックス(タイプ/モデル/トマト)に新しいフィールドを定義し、モデルごとに同じように設定し、その値に対してフィルタリングします:

.filter(type='my_modelname')

それ以外の

.models(MyModel).

これがどのようにスケーリングするかは(まだ)わかりませんが、うまくいくようです。

于 2015-12-14T17:22:33.823 に答える
1

Whooshを使用して同じ問題が発生し、Elasticsearchをインストールすると、None要素がなくなりました。

于 2015-06-20T02:50:10.180 に答える