정보 양이 급격히 증가함에 따라 검색 결과의 정확도에 대한 사용자의 요구 사항이 지속적으로 증가하고 있습니다. 기존의 검색 엔진은 다차원 정확한 검색의 요구를 충족시키기가 어렵 기 때문에 유연하고 효율적인 검색 필터링 기능을 구축하는 것이 특히 중요합니다.
Manticore Search는 빠른 스케일링 및 복잡한 쿼리를 지원하는 오픈 소스, 고성능 전체 텍스트 검색 엔진입니다. 후속 개발 및 사용을 위해 공식 채널에서 Manticore 검색을 다운로드하여 설치할 수 있습니다.
인덱싱은 전체 텍스트 검색의 기초입니다. 다음 예제는 PHP를 통해 제목, 내용 및 분류 필드를 포함하는 인덱스를 만드는 방법을 보여줍니다.
<?php
require 'vendor/autoload.php';
use ManticoresearchClient;
use ManticoresearchIndex;
use ManticoresearchExceptionsRuntimeException;
use ManticoresearchQueryBoolQuery;
use ManticoresearchQueryQuery;
try {
$client = new Client(['host' => 'localhost', 'port' => 9308]);
$index = new Index($client);
$index->create([
'index' => 'myindex',
'type' => 'mytype',
'fields' => [
'title' => ['type' => 'text'],
'content' => ['type' => 'text'],
'category' => ['type' => 'text']
]
]);
echo "Index created successfully.";
} catch (RuntimeException $e) {
echo $e->getMessage();
}
?>
위의 코드는 필요한 텍스트 필드를 포함하는 "MyIndex"라는 색인을 성공적으로 생성했으며 실제 요구에 따라 필드 구조를 조정할 수 있습니다.
인덱스가 생성 된 후 다음 코드 예제를 사용하여 키워드의 전체 텍스트 검색을 구현하여 제목, 컨텐츠 및 분류 필드에서 일치하는 것을 지원할 수 있습니다.
<?php
require 'vendor/autoload.php';
use ManticoresearchClient;
use ManticoresearchQueryBoolQuery;
use ManticoresearchQueryQuery;
$client = new Client(['host' => 'localhost', 'port' => 9308]);
$boolQuery = new BoolQuery();
$query = new Query($client);
$boolQuery->addShould($query->match('title', 'keyword'));
$boolQuery->addShould($query->match('content', 'keyword'));
$boolQuery->addShould($query->match('category', 'keyword'));
$query->bool($boolQuery);
$result = $query->search('myindex', 'mytype');
print_r($result);
?>
이 코드는 키워드 "키워드"를 검색하여 다양한 필드를 다루기 위해 다양한 쿼리 요구를 충족시킬 수 있습니다.
전체 텍스트 검색을 기반으로 필터 조건을 추가하면 더 정확하게 결과가 발생할 수 있습니다. 다음 예제는 특정 범주 필터링과 같은 검색 결과를 필터링하는 방법을 보여줍니다.
<?php
require 'vendor/autoload.php';
use ManticoresearchClient;
use ManticoresearchQueryBoolQuery;
use ManticoresearchQueryQuery;
$client = new Client(['host' => 'localhost', 'port' => 9308]);
$boolQuery = new BoolQuery();
$query = new Query($client);
$boolQuery->addMust($query->match('title', 'keyword'));
$boolQuery->addFilter($query->term('category', 'news'));
$query->bool($boolQuery);
$result = $query->search('myindex', 'mytype');
print_r($result);
?>
필터링 조건을 추가하면 검색 범위가 효과적으로 좁아 질 수 있으며 검색 결과의 관련성과 정확도를 향상시킬 수 있습니다.
이 기사는 PHP와 Manticore 검색을 결합하여 지능형 검색 필터링 기능을 구현하는 방법을 소개합니다. 환경 구성, 인덱스 생성, 전체 텍스트 검색 및 조건부 필터링과 같은 주요 단계를 다룹니다. 검색 엔진 개발에 영감을주고 사용자의 요구에 더 부합하는 지능형 검색 경험을 만드는 데 도움이되기를 바랍니다.