Morphia 経由で Play 2 を使用して MongoDB の Web サイトに検索のログを保存しています。ログには、通常のクエリ用語と結果のリストが含まれています。したがって、基本的には次のようになります。
public class SearchLog {
public String query;
@Indexed
@Reference(lazy = true, ignoreMissing = true)
public List<Result> results;
@Indexed
@Embedded
public LocalDateTime timestamp;
}
検索がいつ行われたか、結果に「これ」が含まれているかどうかに基づいてクエリを作成します。
Query q = q().filter("timestamp >=", start).filter("timestamp <=", end)
.field("results").hasThisElement(something).order("timestamp").asList();
データベースには約 8000 のログ エントリがあり、各ログには約 10 ~ 20 の結果が含まれています。私がテストしているこの特定のクエリは、約 4000 のエントリを返します。ただし、インデックスを使用しても、クエリは非常に遅くなります (> 10 秒)。何か間違ったことをしましたか、MongoDB がクエリを実行する方法を最適化する方法はありますか?
ありがとう