2017-09-04 8 views
0

django-haystackによって返された機能テストの結果はelasticsearchです。elasticsearchでdjango haystackをテストするときの非決定的な結果

テストを実行しているときに異なる結果が出ています。場合によってはテストが合格しないこともあります。

これがなぜ発生するのかわかりません。

私のテストクラスは、まずテストデータベースにエントリを作成し、次にStaticLiveServerTestCase setUpメソッドを使用してmanage.py rebuild_indexを呼び出します。最後に私はmanage.py clear_indexと呼んでいます。

ここでは、django-haystack/elasticsearchコードが機能しているので、検索インデックス、_text.txtのすべてのdjangoコードを再現することはしません。

作成されたデータベースエントリとrebuild_indexの呼び出しの間に同期の問題があるのでしょうか。

<QuerySet [<Step: emg>]> 
<QuerySet [<Step: emg>]> 
<QuerySet [<Step: emg>]> 

と、時々、正しいもの:

基本的には、私のテストでは、私はこの

class SearchTest(FunctionalTest): 

    def setUp(self): 
     super(SearchTest, self).setUp() # this make the entries in database 
     self.rebuild_index() 

    def tearDown(self): 
     super(SearchTest, self).tearDown() 
     call_command('clear_index', interactive=False) 

は、私は、時々、間違った結果を得るインデックス付きオブジェクトを印刷しません

<QuerySet [<Step: emg>]> 
<QuerySet [<Step: emg>]> 
<QuerySet [<Step: emg>]> 
<QuerySet [<Step: eeg>, <Step: emg>]> 
<QuerySet [<Step: eeg>, <Step: emg>]> 

何が起こっている可能性がありますか?

答えて

0

あなたはタイトルで答えを言う。 "非決定的"、まずこれを理解する必要があります。非決定論的アルゴリズムは、同じ入力に対して異なる答えを得ることができます。しかし、なぜこれは?

非決定的でないアルゴリズムを使用する理由を覚えていれば、解決策を見つけることができます。非決定論的アルゴリズムは、一般的に決定論的よりも高速である必要があり、そのために(計算上の近似のような)いくつかのことを「一般化」することができ、この一般化は異なる結果をもたらす可能性がある。しかし、本当に速いです:)

はより

Nondeterministic algorithmsについて編集を読む:決定論的検索@mcmartinをrepplyingため

+0

感謝のためのいくつかの設定を持っているかもしれない、干し草をDjangoのelasticsearchか。あなたのコメントに感謝します。おそらく、何が起こっているのかをより良く説明するために、もっとコードを入れなければならないかもしれません。 – Caco

関連する問題