我正在使用Solr-php-client通过php与solr进行通信。
我通过使用这个php-client搜索solr以及我从Solr获得的其他信息,总结果返回到php中的变量:
$results = $solr->search($querystring, $start_offset, $limit, $solr_params);
$num_total = (int) $results->response->numFound;
我的问题是,当我向Solr添加文档而没有提交它时,$ num_total无论如何都会增加。所以这意味着两件事,或两者兼而有之:
1- Solr autoCommit不起作用 2- solr-php-client返回nr个文档而不是nr个已提交的文档。
我可能在这里错过了一些简单的东西,所以我很感激任何帮助。
无论如何,这是我用solrconfig.xml做的:
<autoCommit>
<maxDocs>3</maxDocs>
<maxTime>60000</maxTime>
</autoCommit>
数字“3”仅用于测试目的,但不能如上所述。
使用autoCommit时,除了上面的内容之外,我还应该考虑其他任何设置吗?
我也在更改solrconfig.xml文件后重新启动了jetty(我的容器)和solr。
如果您需要更多输入,请告诉我......
由于
答案 0 :(得分:0)
php solr客户端在这里没有做任何特别的事情,numFound正是Solr本身正在返回的东西。哪个应该基于查询时提交的文档。
但是,我对你的问题感到有些困惑。您的投诉是否在您预期文件被自动提交之前?如果是这样,您应该以相反的方式测试 - 增加autoCommit块中的maxDoc数量。我不确定solr本身是什么保证了在触发提交之前它将允许多接近maxDocs。典型设置为1,000或10,000,具体取决于您的索引特征。然后,时间通常用作您愿意等待文档在索引中显示多长时间的上限。您正试图在效率和延迟之间取得平衡。在任何情况下,唯一可以了解正在发生的事情的方法是查看Solr的日志 - 它将包含添加,查询和提交的条目,您可以看到有多近或者它们彼此远离,或者如果在代码中存在您不知道的明确提交。
如果您可以使用该日志的一部分更新您的问题,那么它将有助于您进行诊断。