
SolrClient::deleteByQuery는 특정 쿼리에 해당하는 문서를 삭제하는 메서드입니다. 쿼리를 작성할 때, 특정 필드나 조건에 해당하는 문서만 삭제하려면 필드명과 연산자, 조건을 포함해야 합니다.
예를 들어, 다음과 같이 쿼리를 작성할 수 있습니다.
#hostingforum.kr
php
$query = '키워드:검색어 AND 필드명:값';
$client->deleteByQuery($query);
또한, deleteByQuery를 사용할 때 발생할 수 있는 에러나 예외 처리 방법은 다음과 같습니다.
- 쿼리 작성 오류: 쿼리 작성 오류로 인해 삭제가 실패할 수 있습니다. 예를 들어, 필드명이 잘못된 경우 또는 연산자가 올바르지 않은 경우입니다.
- Solr 서버 오류: Solr 서버가 다운되거나, 네트워크 오류로 인해 삭제가 실패할 수 있습니다.
- 권한 오류: 사용자가 삭제 권한이 없는 경우 삭제가 실패할 수 있습니다.
이러한 오류를 처리하기 위해 try-catch 블록을 사용할 수 있습니다.
#hostingforum.kr
php
try {
$client->deleteByQuery($query);
} catch (Exception $e) {
// 오류 처리 코드를 작성합니다.
echo '삭제 실패: ' . $e->getMessage();
}
또한, deleteByQuery를 사용할 때는 반드시 삭제할 문서의 ID를 확인하고, 삭제를 수행하기 전에 삭제할 문서의 ID를 확인하는 코드를 추가하는 것이 좋습니다.
#hostingforum.kr
php
$query = '키워드:검색어 AND 필드명:값';
$result = $client->query($query);
$ids = array();
foreach ($result->getResponse()->getResponse()->docs as $doc) {
$ids[] = $doc->id;
}
if (!empty($ids)) {
$client->deleteByQuery($query);
} else {
echo '삭제할 문서가 없습니다.';
}
이러한 예외 처리 코드를 추가하면, deleteByQuery를 사용할 때 발생할 수 있는 오류를 처리할 수 있습니다.
2025-07-07 07:37