Solr는 전체 텍스트 검색을 구현하는 데 사용할 수 있는 Lucene 기반 검색 엔진입니다. 전체 텍스트 검색을 위해 PHP에서 Solr를 사용하면 키워드를 통해 관련 데이터를 신속하게 쿼리하고 검색 결과의 정확성과 신뢰성을 향상시킬 수 있습니다. 이 기사에서는 전체 텍스트 검색을 위해 PHP에서 Solr를 사용하는 방법을 소개합니다.
1. Solr 설치 및 구성
먼저 서버에 Solr 및 PHP의 Solr 확장을 설치해야 합니다. Solr 설치 단계는 Solr 공식 문서를 참조하세요. PHP의 Solr 확장은 다음 명령을 사용하여 설치할 수 있습니다:
sudo pecl install solr
설치가 완료된 후 예를 들어 Ubuntu에서 Solr 확장을 PHP 구성 파일에 추가해야 합니다. /etc/php/7.0/apache2/php.ini 파일을 편집하고 다음 내용을 추가할 수 있습니다:
extension=solr.so
파일을 저장하고 종료한 후 Apache 서버를 다시 시작하여 구성을 적용합니다.
2. Solr 인덱스 생성
Solr 및 PHP용 Solr 확장을 설치한 후 Solr 인덱스를 생성해야 합니다. Solr 인덱스는 전체 텍스트 검색을 지원하는 데 사용되는 데이터베이스 테이블의 모든 데이터에 해당하는 빠른 조회 테이블입니다. Solr 인덱스를 생성하는 단계는 다음과 같습니다.
sudo su - solr -c "/opt/solr/bin/solr create -c mycore"
"mycore"는 인덱스와 유사한 이름이며 직접 정의할 수 있습니다. 성공적으로 생성되면 http://localhost:8983/solr/#/mycore를 방문하여 볼 수 있습니다.
Solr에서는 인덱싱에 필요한 필드를 정의해야 합니다. 예를 들어 기사의 제목과 본문 내용을 검색하려면 제목과 내용 필드를 각각 정의해야 합니다.
Solr 관리 인터페이스에서 정의할 수 있습니다. 왼쪽의 "스키마" 버튼을 클릭하고 "필드" 탭에서 "필드 추가"를 클릭하고 필드 이름을 "title"로 입력하고 필드 유형을 "text_cn"으로 입력합니다. " (text_cn은 Solr용 중국 분석기입니다.) "저장" 버튼을 클릭하여 저장하세요.
마찬가지로 "text_cn" 유형을 사용하여 "content"라는 필드를 생성할 수 있습니다.
Solr 코어를 생성하고 인덱스 필드를 정의한 후에는 데이터베이스의 데이터를 Solr 인덱스로 가져와야 합니다. 이는 PHP 스크립트를 작성하여 달성할 수 있습니다.
다음은 샘플 코드입니다.
<?php $servername = "localhost"; $username = "root"; $password = "password"; $dbname = "mydatabase"; //连接数据库 $conn = new mysqli($servername, $username, $password, $dbname); //检查连接是否成功 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } //查询数据库中的数据 $sql = "SELECT id, title, content FROM articles"; $result = $conn->query($sql); //创建Solr客户端 $options = array( 'hostname' => 'localhost', 'port' => 8983, 'path' => '/solr/mycore' ); $client = new SolrClient($options); //将数据导入到Solr索引中 while($row = $result->fetch_assoc()) { $doc = new SolrInputDocument(); $doc->addField('id', $row['id']); $doc->addField('title', $row['title']); $doc->addField('content', $row['content']); $client->addDocument($doc); } $client->commit(); $client->optimize(); echo "Solr索引创建成功!"; //关闭数据库连接 $conn->close(); ?>
위 코드에서 SolrClient() 메서드의 $username, $password, $dbname, $options 및 mycore를 해당 값으로 바꿔야 합니다.
이 스크립트를 실행하면 Solr 인덱스에 데이터베이스의 데이터가 포함되며 관련 데이터를 키워드로 검색할 수 있습니다.
3. Solr를 통한 전체 텍스트 검색
인덱스에 데이터가 포함된 후 Solr를 사용하여 전체 텍스트 검색을 수행할 수 있습니다. 검색 기능은 PHP 애플리케이션을 통해 Solr 서버와 통신하여 구현할 수 있습니다. Solr에서 제공하는 쿼리 언어는 SOLRQ(Solr Query Language)입니다. 쿼리 구문은 요청된 데이터를 Solr가 인덱싱한 데이터와 비교하여 필요한 텍스트가 포함된 문서를 식별하는 데 사용됩니다.
다음은 간단한 검색 코드 예시입니다.
<?php //创建Solr客户端 $options = array( 'hostname' => 'localhost', 'port' => 8983, 'path' => '/solr/mycore' ); $client = new SolrClient($options); //查询数据 $query = 'title:关键词'; $query_response = $client->query($query); $response = $query_response->getResponse(); $docs = $response['response']['docs']; foreach ($docs as $doc) { echo $doc['title'] . " "; } ?>
위 코드에서 $options, mycore 및 $query의 "keywords"를 해당 값으로 바꿔야 합니다.
검색 구문에서 제목:키워드는 제목에 "키워드"가 포함된 문서를 검색한다는 의미입니다. 콘텐츠를 검색하려면 content: 키워드 형식을 사용할 수 있습니다. 퍼지 쿼리, 범위 쿼리, 부울 쿼리 등과 같이 쿼리에 추가 수정 작업을 수행할 수도 있습니다.
4. 요약
이 글에서는 전체 텍스트 검색을 위해 PHP에서 Solr를 사용하는 기본 단계를 소개합니다. 먼저 Solr 인덱스를 생성하여 데이터베이스의 데이터를 Solr 인덱스로 가져온 다음 PHP 애플리케이션을 통해 Solr 서버와 통신하여 검색 및 기타 작업을 수행합니다. 실제 응용에서는 더 많은 기능적 속성과 구성 옵션을 배우고 사용해야 합니다. 이 기사가 모든 사람에게 도움이 되기를 바랍니다.
위 내용은 PHP에서 Solr을 사용한 전체 텍스트 검색의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!