PHP函式:SolrQuery::setGroup()
適用版本:Solr 4.0.0及以上版本
用法:SolrQuery::setGroup() 方法用於設定 Solr 查詢的分組引數。它允許您按照指定的欄位對查詢結果進行分組,並可選擇性地設定分組的排序方式、分組結果的數量等。
語法:
public SolrQuery SolrQuery::setGroup ( bool $value )
引數:
- $value(可選):一個布林值,指示是否啟用分組。預設為 false。
返回值:返回一個 SolrQuery 物件,用於鏈式呼叫其他 Solr 查詢引數的方法。
示例:
// 建立 Solr 查詢物件
$query = new SolrQuery();
// 啟用分組
$query->setGroup(true);
// 設定分組欄位
$query->addGroupField('category');
// 設定分組排序方式
$query->setGroupSort('score desc');
// 設定每個分組返回的結果數量
$query->setGroupLimit(5);
// 執行查詢
$response = $client->query($query);
// 獲取分組結果
$groupedResults = $response->getResponse()->grouped->category->groups;
// 遍歷分組結果
foreach ($groupedResults as $group) {
// 獲取分組的欄位值
$category = $group->groupValue;
// 獲取分組的文件列表
$docs = $group->doclist->docs;
// 輸出分組資訊
echo "Category: $category\n";
// 輸出文件列表
foreach ($docs as $doc) {
echo "ID: " . $doc->id . "\n";
echo "Title: " . $doc->title . "\n";
echo "Score: " . $doc->score . "\n";
echo "---\n";
}
}
以上示例中,我們建立了一個 Solr 查詢物件 $query
,啟用了分組功能,並設定了分組欄位為 category
。我們還設定了分組排序方式為 score desc
,即按照得分降序排列。每個分組返回的結果數量限制為 5 條。
然後,我們透過執行查詢 $client->query($query)
獲取到查詢結果的響應物件 $response
。我們可以透過 $response->getResponse()
方法獲取到完整的響應結果,並從中提取出分組結果。
最後,我們遍歷分組結果 $groupedResults
,獲取每個分組的欄位值和對應的文件列表,並將其輸出。