ElasticSearch でいくつかのテストを行っていますが、非常に一般的な用語の結果が返されないことがわかりました。これは、タイムアウト、メモリ不足、または関連する何かが原因である可能性があると思いますが、エラー フィードバックが得られない理由について混乱しています。
これはコード スニペットです。
// client & index ----------------------------------------------
$eC = new Elastica_Client();
$eI = $eC->getIndex('test_index');
// query string ---------------------------------------
$eQqs = new Elastica_Query_QueryString();
$eQqs->setDefaultOperator('AND');
$eQqs->setQuery('the'); ### <--- example of a common keyword,
// --- note that if I were to use something less common like "zoo"
// that it would return an expected result set
// search object --------------------------------------
$eQ = new Elastica_Query();
$eQ->setQuery( $eQqs );
$eQ->setFrom(1);
$eQ->setLimit(3);
// get result set -------------------------------------
$eRS = $eI->search( $eQ );
// output results ----------------------------------------
echo "total time: " . $eRS->getTotalTime() . "\n";
echo "total results: " . $eRS->getTotalHits() . "\n\n";
foreach( $eRS->getResults() as $result ) {
print_r( $result->getData() );
}
コメントで述べたように、あまり一般的でない文字列を検索すると、うまく機能し、次のような結果が得られます。
total time: 292
total results: 21
Array
(
[id] => 1234
[name] => A day at the Zoo
...
ただし、「the」などの非常に一般的なものを検索すると、から何も得られず、次のよう$eRS->getResults()
になります。
total time: 2
total results: 0
念のために言っておきますが、実際にインデックスに「the」のインスタンスが多数あることを確認しました。ここで何が起こっているのですか?私はこれを間違ってやっていますか?そうでない場合、この明らかに予期しない結果セットの代わりに、意味のあるエラーを吐き出すにはどうすればよいですか?