Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SOLR 4中查找最后一个可搜索文档的密钥_Solr_Solrj - Fatal编程技术网

在SOLR 4中查找最后一个可搜索文档的密钥

在SOLR 4中查找最后一个可搜索文档的密钥,solr,solrj,Solr,Solrj,我将Solr4用于一个应用程序,我需要在插入记录后立即搜索索引 我正在使用下面的solrj代码来获取索引中的最后一个ID。然而,我注意到,当我通过SolrWeb管理员执行查询时,我看到的最后一个id通常落后于此。直到我从下面的代码片段中得到最后一个ID,我的搜索才包括所有文档。这是因为硬提交的延迟吗?我还不需要切换到软提交。我只是想确保我得到了最后一个可搜索文档的ID。这可能吗 SolrQuery query = new SolrQuery(); query.set("qt"

我将Solr4用于一个应用程序,我需要在插入记录后立即搜索索引

我正在使用下面的solrj代码来获取索引中的最后一个ID。然而,我注意到,当我通过SolrWeb管理员执行查询时,我看到的最后一个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)比其他字段(本例中为文本)更易于搜索?

您如何提交索引? 您应该将commit与
waitSearcher=true
waitFlush=true
一起使用,这样它就会阻塞,直到新的搜索程序可以使用Solrj commit进行查询


否则,在提交和打开新的搜索程序(新索引可用)之间会有一些延迟。在此之前,搜索将由包含旧数据的旧搜索执行。

谢谢。我已经更新了我提交索引的方式。我可以在solrj中设置waitSearcher和waitFlush选项吗?或者我需要用新的配置设置重新启动solr吗?根据这个页面:waitSearch默认为true,waitFlush“没有影响”。是的。。。两者都默认为true。因此,我不确定是新搜索引擎的创建还是缓存升温导致了延迟。