Web アプリケーションで Solr を検索エンジンとして使用しています。DataImportHandler を使用して、データベースから検索インデックスにデータを自動的にインポートします。DataImportHandler が新しいデータを追加すると、データはインデックスに正常に追加されますが、SolrJ を使用してインデックスにクエリを実行しても返されません。SolrJ がデータを見つけるには、アプリケーション サーバーを再起動する必要があります。ある種のキャッシングが行われていますか?組み込みモードで SolrJ を使用しました。これが私のSolrJコードです:
private static final SolrServer solrServer = initSolrServer();
private static SolrServer initSolrServer() {
try {
CoreContainer.Initializer initializer = new CoreContainer.Initializer();
coreContainer = initializer.initialize();
EmbeddedSolrServer server = new EmbeddedSolrServer(coreContainer, "");
return server;
} catch (Exception ex) {
logger.log(Level.SEVERE, "Error initializing SOLR server", ex);
return null;
}
}
次に、クエリを実行するには、次のようにします。
SolrQuery query = new SolrQuery(keyword);
QueryResponse response = solrServer.query(query);
ご覧のとおり、私の SolrServer は static として宣言されています。代わりに、クエリごとに新しい EmbeddedSolrServer を作成する必要がありますか? パフォーマンスが大幅に低下するのではないかと心配しています。