PHP와 Manticore 검색을 사용하여 빠른 검색 프롬프트 기능 개발
요즘 인터넷의 발달과 함께 검색 엔진은 사람들이 정보를 얻는 주요 도구 중 하나가 되었습니다. 사용자는 일반적으로 관심 있는 콘텐츠를 쿼리하기 위해 키워드를 사용하며, 검색 엔진은 이러한 키워드를 기반으로 관련 결과를 반환합니다.
그러나 기존 검색 방법에는 몇 가지 제한 사항이 있습니다. 정확한 결과를 얻으려면 사용자가 완전한 키워드를 입력해야 하며, 이로 인해 사용자의 대기 시간이 늘어날 수 있습니다. 사용자 경험을 향상시키기 위해 사용자가 키워드를 입력할 때 관련 검색 제안을 즉시 얻을 수 있는 빠른 검색 프롬프트 기능을 사용하는 것을 고려할 수 있습니다.
이 글에서는 PHP와 Manticore Search를 활용하여 빠른 검색 프롬프트 기능을 구현하는 방법을 소개하겠습니다.
Manticore 검색은 Sphinx Search의 포크이며 더 높은 성능과 더 많은 기능을 갖춘 오픈 소스 전체 텍스트 검색 엔진입니다.
만티코어 검색은 검색 프롬프트 구현을 위해 "완성"이라는 기능을 제공합니다. 적절한 인덱스를 구축하고 적절한 쿼리문을 사용하면 빠르고 정확한 검색 제안을 얻을 수 있습니다.
시작하기 전에 Manticore Search를 설치하고 PHP가 Manticore Search와의 통신을 지원하는지 확인해야 합니다. pecl
명령을 통해 관련 확장을 설치할 수 있습니다: pecl
命令来安装相关的扩展:
pecl install manticore
安装成功后,我们需要在PHP的扩展配置文件中启用这个扩展。我们可以在php.ini
中添加以下行:
extension=manticore.so
重启PHP以使更改生效。
在我们开始之前,我们需要准备一些数据并建立相应的索引。假设我们有一个名为"products"的表,包含了产品的名称和描述。
我们可以使用以下代码来建立索引:
<?php require_once 'ManticoreSearch.php'; $client = new ManticoreSearchClient([ 'host' => 'localhost', 'port' => 9306, ]); $client->connect(); $index = 'products'; $table = 'products'; $client->query("DELETE FROM $table WHERE 1"); $client->query("TRUNCATE RTINDEX $index"); $data = [ ['id' => 1, 'name' => 'iPhone X', 'description' => 'A revolutionary new iPhone.'], ['id' => 2, 'name' => 'Samsung Galaxy S9', 'description' => 'The latest Samsung smartphone.'], ['id' => 3, 'name' => 'Google Pixel 3', 'description' => 'A powerful Android phone.'], // 添加更多产品数据... ]; $client->index($table, $data); $client->query("ALTER RTINDEX $index ADD COLUMN completion TEXT"); $client->disconnect(); ?>
在上面的代码中,我们首先创建一个Client
实例,然后使用connect
方法连接到Manticore Search服务。接下来,我们清空并重建相应的表和索引。
接着,我们向表中添加一些产品的数据。确保将实际的产品数据添加到$data
数组中。
最后,我们使用ALTER RTINDEX
命令向索引添加一个用于存储搜索提示的列。
现在,我们已经准备好了数据和索引,可以开始创建搜索提示了。我们可以使用以下代码来实现:
<?php require_once 'ManticoreSearch.php'; $client = new ManticoreSearchClient([ 'host' => 'localhost', 'port' => 9306, ]); $client->connect(); $index = 'products'; $table = 'products'; $keyword = isset($_GET['keyword']) ? $_GET['keyword'] : ''; $query = "SELECT * FROM $index WHERE MATCH(:keyword) OPTION field_weights=(name=10, description=5) LIMIT 10"; $params = [ 'keyword' => "@(name,description) $keyword*", ]; $result = $client->query($query, $params); $suggestions = []; if ($result !== false) { foreach ($result['hits'] as $hit) { $suggestions[] = $hit['attrs']['name']; } } $client->disconnect(); echo json_encode($suggestions); ?>
在上面的代码中,我们首先创建一个Client
实例并进行连接。然后,我们定义了一个$keyword
变量,用于存储用户输入的关键字。
接着,我们使用SELECT
语句来执行查询。通过将用户输入的关键字作为查询的一部分,并使用MATCH
子句来匹配索引中的内容,我们可以获取与关键字匹配的结果。
在这个例子中,我们对name
rrreee
php.ini
에 다음 줄을 추가할 수 있습니다: rrreee
변경 사항을 적용하려면 PHP를 다시 시작하세요. Indexing시작하기 전에 일부 데이터를 준비하고 해당 인덱스를 만들어야 합니다. 제품 이름과 설명이 포함된 "products"라는 테이블이 있다고 가정해 보겠습니다. 다음 코드를 사용하여 인덱스를 작성할 수 있습니다. 🎜rrreee🎜위 코드에서는 먼저Client
인스턴스를 생성한 다음 connect
를 사용하여 Manticore Search 서비스에 연결합니다. 코드> 메소드 . 다음으로 해당 테이블과 인덱스를 비우고 다시 작성합니다. 🎜🎜다음으로 테이블에 일부 제품 데이터를 추가합니다. $data
배열에 실제 제품 데이터를 추가했는지 확인하세요. 🎜🎜마지막으로 ALTER RTINDEX
명령을 사용하여 검색 힌트를 저장하기 위해 인덱스에 열을 추가합니다. 🎜🎜검색 팁 만들기🎜🎜이제 데이터와 인덱스가 준비되었으므로 검색 팁 만들기를 시작할 수 있습니다. 이를 달성하기 위해 다음 코드를 사용할 수 있습니다. 🎜rrreee🎜 위 코드에서는 먼저 Client
인스턴스를 생성하고 연결합니다. 그런 다음 사용자가 입력한 키워드를 저장하기 위해 $keyword
변수를 정의합니다. 🎜🎜다음으로 SELECT
문을 사용하여 쿼리를 실행합니다. 사용자가 쿼리의 일부로 입력한 키워드를 포함하고 MATCH
절을 사용하여 인덱스의 콘텐츠를 일치시키면 키워드와 일치하는 결과를 얻을 수 있습니다. 🎜🎜이 예에서는 name
필드에 더 높은 가중치를 부여합니다. 실제 상황에 따라 필드 가중치를 조정할 수 있습니다. 🎜🎜마지막으로 검색 제안을 JSON 형식으로 변환하여 출력합니다. 🎜🎜결론🎜🎜이 기사에서는 PHP와 Manticore 검색을 사용하여 빠른 검색 프롬프트 기능을 구현하는 방법을 배웠습니다. 적절한 색인을 구축하고 올바른 쿼리 문을 사용함으로써 사용자가 키워드를 입력할 때 즉시 관련 검색 제안을 얻을 수 있습니다. 이 접근 방식은 사용자의 검색 경험을 크게 향상시킬 수 있습니다. 🎜🎜공간 제한으로 인해 이 기사에서는 간단한 샘플 코드만 제공하며 필요에 따라 수정하고 확장할 수 있습니다. 이 기사가 Manticore 검색을 더 탐색하고 사용하여 더욱 강력한 검색 기능을 구축하는 데 도움이 되기를 바랍니다. 🎜위 내용은 PHP 및 Manticore 검색을 사용하여 빠른 검색 프롬프트 개발의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!