【发布时间】:2011-09-26 18:54:02
【问题描述】:
我正在使用 SOLR PHP 客户端从 solr 服务中查询数据。我的代码类似于下面的代码,因为我传入了一个查询来搜索多个 ID(在我的例子中,很多)。当我一次搜索太多 ID 时,问题就出现了。传入太多 ID 时,我得到一个“请求实体太大”。有没有办法解决这个问题?从我在各种示例中看到的情况来看,语法似乎是 'id:1 OR id:2 OR id:3 etc.'搜索多个值时。这有一种不同的语法可以减少传递给服务的请求的大小吗?例如在 SQL 中,我们可以说,'id in (1,2,3,etc.)'。我们可以为 SOLR 查询做类似的事情吗?
<?php
require_once( 'SolrPHPClient/Apache/Solr/Service.php' );
$solr = new Apache_Solr_Service( 'localhost', '8983', '/solr' );
$offset = 0;
$limit = 10;
$queries = array(
'id: 1 OR id: 2 OR id:3 OR id:4 OR id:5 OR id:6 or id:7 or id:8' // in my case, this list keeps growing and growing
);
foreach ( $queries as $query ) {
$response = $solr->search( $query, $offset, $limit );
if ( $response->getHttpStatus() == 200 ) {
print_r( $response->getRawResponse() );
}
else {
echo $response->getHttpStatusMessage();
}
}
?>
【问题讨论】:
-
我遇到了类似的问题,但切换到了另一种搜索表示法,例如 viewPermGroupId:(ANY OR 018f5984be10c58ac950f3de8223d76a OR 021132071593b65c1d9ea28d60ac57c3) 有点短....