レコードを挿入した直後にインデックスを検索する必要があるアプリケーションに SOLR 4 を使用しています。
以下のsolrjコードを使用して、インデックスの最後のIDを取得しています。ただし、solr web admin を介してクエリを実行したときに表示される最後の ID が、これよりも遅れていることが多いことに気付きました。そして、私の検索には、以下のコード スニペットから取得した最後の ID までのすべてのドキュメントが含まれていません。これは、ハードコミットの遅延によるものですか? まだソフトコミットに切り替える必要はありません。最後に検索可能なドキュメントの ID を確実に取得したいだけです。これは可能ですか?
SolrQuery query = new SolrQuery();
query.set("qt","/select");
query.setQuery( "*:*" );
query.setFields("id");
query.set("rows","1");
query.set("sort","id desc");
QueryResponse rsp = m_Server.query( query );
SolrDocumentList docs = rsp.getResults();
SolrDocument doc = docs.get(0);
long id = (Long) doc.getFieldValue("id");
更新:
私は次の方法で solrj にドキュメントをコミットしています:
m_Server = new HttpSolrServer(m_Url);
SolrInputDocument doc = new SolrInputDocument();
doc.addField( "id", id);
doc.addField( "text", text);
m_Server.add(doc);
m_Server.commit();
一部のフィールド (この場合は id) が他のフィールド (この場合はテキスト) より先に検索可能になる可能性はありますか?