1

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」のインスタンスが多数あることを確認しました。ここで何が起こっているのですか?私はこれを間違ってやっていますか?そうでない場合、この明らかに予期しない結果セットの代わりに、意味のあるエラーを吐き出すにはどうすればよいですか?

4

1 に答える 1

2

「a」、「an」、「and」、「are」、「as」、「at」、「be」、「but」、「by」、「for」、「if」、「in」などの一般的な単語、「に」、「ある」、「それ」、「いいえ」、「ない」、「の」、「オン」、「または」、「そのような」、「それ」、「その」、「彼らの」、「 then"、"there"、"these"、"they"、"this"、"to"、"was"、"will"、"with" は、いわゆるストップ ワードです。これらの単語は非常に一般的であり、通常、全文検索には価値がないと考えられています。したがって、それらはインデックス化されず、デフォルトで検索中に無視されます。

于 2012-12-04T23:26:24.103 に答える