0

編集:

今のところハックで解決しました。473行目に追加:

if (isset($this->_termsFreqs[$termId][$docId])) {

}

これは、複数の単語を検索している場合にのみ発生します。例:

+word1 +word2 + word3

この大規模なエラーが発生します:

Notice: Undefined offset: 2 in C:\wamp\www\project\library\Zend\Search\Lucene\Search\Query\MultiTerm.php on line 473

Notice: Undefined offset: 2 in C:\wamp\www\project\library\Zend\Search\Lucene\Search\Query\MultiTerm.php on line 473

Notice: Undefined offset: 4 in C:\wamp\www\project\library\Zend\Search\Lucene\Search\Query\MultiTerm.php on line 473

Notice: Undefined offset: 4 in C:\wamp\www\project\library\Zend\Search\Lucene\Search\Query\MultiTerm.php on line 473

Notice: Undefined offset: 6 in C:\wamp\www\project\library\Zend\Search\Lucene\Search\Query\MultiTerm.php on line 473

Notice: Undefined offset: 6 in C:\wamp\www\project\library\Zend\Search\Lucene\Search\Query\MultiTerm.php on line 473

Notice: Undefined offset: 1 in C:\wamp\www\project\library\Zend\Search\Lucene\Search\Query\MultiTerm.php on line 473

Notice: Undefined offset: 1 in C:\wamp\www\project\library\Zend\Search\Lucene\Search\Query\MultiTerm.php on line 473

Notice: Undefined offset: 9 in C:\wamp\www\project\library\Zend\Search\Lucene\Search\Query\MultiTerm.php on line 473

Notice: Undefined offset: 9 in C:\wamp\www\project\library\Zend\Search\Lucene\Search\Query\MultiTerm.php on line 473

面白いことに、返される結果セットは正しいので、本番環境ではエラーレポートをオフにするだけで、魅力のように機能しますが、それはしたくありません。

同様の問題がここに文書化されています:http://framework.zend.com/issues/browse/ZF-5545

そしてどうやら解決策はありません。

また、UTF-8互換のテキストアナラ​​イザーを使用してみました(インデックスにラテン文字1文字しかない場合でも)。

Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8());
4

2 に答える 2

1

警告を抑制するには、この条件を設定する必要があります。

if(array_key_exists($ termId、$ this-> _ termsFreqs)&& array_key_exists($ docId、$ this-> _ termsFreqs [$ termId])){...}

しかし、これが役立つかどうかという疑問は残ります。この未定義のオフセットを引き起こす論理エラーがある可能性があります。

于 2009-11-27T14:56:40.967 に答える