>  기사  >  백엔드 개발  >  PHP와 Apache Solr를 사용하여 검색 엔진 구축

PHP와 Apache Solr를 사용하여 검색 엔진 구축

王林
王林원래의
2023-06-25 08:28:031231검색

인터넷과 모바일 기기의 대중화로 인해 검색 엔진은 사람들이 정보를 얻고 답을 찾는 첫 번째 선택이 되었습니다. 효율적이고 정확한 검색 엔진을 구축하려면 다양한 기술과 도구를 사용해야 합니다. 이 기사에서는 PHP와 Apache Solr를 사용하여 검색 엔진을 구축하는 방법을 소개합니다.

1. 아파치 솔라(Apache Solr)란 무엇인가요?

Apache Solr는 Java로 작성된 Lucene 기반의 오픈 소스 검색 플랫폼으로, 빠르고 확장 가능하며 효율적인 텍스트 검색 및 분석 기능을 제공합니다. Solr는 텍스트, XML, JSON 및 기타 데이터 형식을 저장, 색인화 및 검색할 수 있습니다. Lucene 쿼리 구문, SQL, XPath, XSLT 등과 같은 여러 쿼리 언어를 지원합니다.

2. Apache Solr를 선택하는 이유는 무엇입니까?

다른 검색 엔진 소프트웨어와 비교하여 Solr는 다음과 같은 장점이 있습니다.

  1. 효율성: Solr는 많은 양의 데이터를 처리할 수 있으며 쿼리 시 필요한 정보를 빠르게 찾을 수 있습니다.
  2. 확장성: Solr는 수백 대의 서버로 확장할 수 있으며 수평 확장을 지원합니다.
  3. 사용 편의성: Solr는 다양한 쿼리 언어와 데이터 형식을 지원하며 구성 및 배포가 비교적 간단합니다.

3. Apache Solr를 사용하는 방법은 무엇입니까?

  1. Apache Solr 설치

먼저 최신 버전의 Apache Solr를 다운로드하고 적절한 디렉터리에 압축을 풀어야 합니다. 그런 다음 공식 문서(https://lucene.apache.org/solr/guide/8_6/)에 따라 구성하고 시작합니다.

  1. 인덱스 생성

Solr의 핵심 기능은 데이터를 인덱싱하고 검색하는 것입니다. 인덱싱은 특정 방식으로 Solr 서버에 데이터를 저장하는 것입니다. Solr는 JSON, XML, CSV 등과 같은 다양한 데이터 형식을 지원합니다.

다음에서는 JSON 형식을 예로 들어 인덱스 생성 방법을 소개합니다.

먼저, 데이터 구조와 인덱스 구성을 설명하기 위해 Schema.xml 파일을 정의해야 합니다. Schema.xml에는 다음 내용이 포함되어 있습니다.

  1. field: 인덱스 필드와 데이터 유형을 정의합니다.
  2. copyField: 한 필드에서 다른 필드로 복사하기 위한 규칙을 정의합니다.
  3. uniqueKey: 색인된 문서의 고유 식별자를 정의합니다.

예:

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" /> 
<field name="title" type="text_general" indexed="true" stored="true" multiValued="false" />
<field name="content" type="text_general" indexed="true" stored="true" multiValued="true" />
<copyField source="title" dest="text" />
<copyField source="content" dest="text" />
<uniqueKey>id</uniqueKey> 

다음으로, 컬 명령을 사용하여 Solr로 데이터를 가져옵니다.

curl http://localhost:8983/solr/mycore/update -H “Content-Type:application/json" -d '[
{ "id":"1", "title":"Solr是什么", "content":"Solr是一款开源搜索引擎" },
{ "id":"2", "title":"Solr如何使用", "content":"可以使用Java或HTTP协议发送请求到Solr服务器" },
{ "id":"3", "title":"Solr的优势是什么", "content":["高效性", "可扩展性", "易用性"] }
]’

위 명령은 ID가 1, 2, 3인 데이터를 mycore 인덱스 라이브러리로 가져오는 것을 의미합니다.

  1. 쿼리 데이터

Solr의 쿼리 언어는 와일드카드 쿼리, 구문 쿼리, 범위 쿼리, 부울 쿼리 등 다양한 쿼리 방법을 지원합니다. 다음은 HTTP 쿼리를 예로 들었습니다.

http://localhost:8983/solr/mycore/select?q=title:Solr&fq=content:开源&sort=id+desc&start=0&rows=10&fl=title,id

위 쿼리의 의미는 다음과 같습니다.

  1. 쿼리 조건: 제목은 Solr입니다.
  2. 필터 조건: 콘텐츠에 "오픈 소스"가 포함되어 있습니다.
  3. 정렬: ID를 기준으로 내림차순으로 정렬합니다.
  4. 페이징: 0번째 레코드부터 10개의 레코드를 가져옵니다.
  5. 반환 필드: 제목 및 ID 필드만 반환됩니다.

4. PHP를 사용하여 Solr 서버에 연결하는 방법은 무엇입니까?

PHP는 HTTP 요청을 보내는 데 사용할 수 있는 컬 확장을 제공합니다. 다음은 Solr 서버에 연결하는 간단한 예입니다.

<?php
$url = 'http://localhost:8983/solr/mycore/select?q=title:Solr';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

curl_close($ch);

echo $response;
?>

위 코드는 Solr 서버에 쿼리 요청을 보내는 것을 의미하며, 반환된 결과는 $response 변수에 저장됩니다.

5. PHP와 Solr를 사용하여 검색 엔진을 구축하는 방법은 무엇입니까?

  1. 인덱스 생성

먼저 검색할 데이터를 Solr로 가져와야 합니다. 컬 명령을 사용하거나 PHP에서 코드를 작성하여 가져오기 작업을 수행할 수 있습니다. 예:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://localhost:8983/solr/mycore/update?commitWithin=1000');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type:application/json'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);

$response = curl_exec($ch);

curl_close($ch);

위 코드는 PHP를 사용하여 $json_data의 데이터를 mycore라는 인덱스 라이브러리로 가져오고 1초 이내에 제출 작업을 완료함을 나타냅니다.

  1. 데이터 쿼리

PHP를 사용하여 Solr 서버에 연결하고, 쿼리 인터페이스를 호출하고, 쿼리 결과를 반환합니다. 예:

$url = 'http://localhost:8983/solr/mycore/select?q='.$query.'&start='.($page-1)*$rows.'&rows='.$rows.'&wt=json&indent=true';

$response = file_get_contents($url);

위 코드는 $query 쿼리 조건을 정의하는 것을 의미합니다. $page에서 각 페이지는 $rows개의 데이터 조각을 표시합니다. Solr 서버에서 쿼리 결과를 얻으려면 file_get_contents 함수를 사용하십시오.

  1. 데이터 표시

쿼리 결과를 PHP 배열로 구문 분석한 다음 필요에 따라 페이징, 정렬, 필터링 및 기타 작업을 수행하고 마지막으로 데이터를 페이지에 표시합니다. 예:

$data = json_decode($response, true);

foreach ($data['response']['docs'] as $doc) {
    echo '<a href="'.$doc['url'].'">'.$doc['title'].'</a><br/>';
}

위 코드는 쿼리 결과를 탐색하고 각 데이터의 제목과 링크를 표시하는 것을 나타냅니다.

6. 요약

이 글에서는 PHP와 Apache Solr를 사용하여 검색 엔진을 구축하는 방법을 소개합니다. Solr의 기본 기능, 사용 방법, PHP와의 조합에 대한 자세한 설명을 통해 독자는 Solr의 사용법을 빠르게 익히고 PHP를 사용하여 검색 엔진 코드를 작성할 수 있습니다. Solr는 강력한 검색 및 분석 기능을 제공하며 다양한 유형의 검색 엔진을 구축하는 데 이상적입니다.

위 내용은 PHP와 Apache Solr를 사용하여 검색 엔진 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.