查詢

SolrQuery::setGroup()函式—用法及示例

「 設定 Solr 查詢的分組引數 」


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,獲取每個分組的欄位值和對應的文件列表,並將其輸出。

補充糾錯
熱門PHP函式
分享連結