首页 文章

在SOLR 4中查找最后一个可搜索文档的关键字

提问于
浏览
0

我正在使用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)可以在其他字段(在本例中为文本)之前进行搜索?

1 回答

  • 0

    你是如何提交索引的?您应该使用 waitSearcher=truewaitFlush=true 提交,以便它阻塞,直到新的搜索器可用于使用Solrj提交进行查询 .

    否则,Commits和New Searcher之间会有一些延迟,新指数可用 . 直到那时搜索将由具有旧数据的旧搜索执行 .

相关问题