PHP 및 Manticore 검색을 사용하여 다국어 검색 기능 개발
세계화의 급속한 발전으로 인해 점점 더 많은 웹사이트와 애플리케이션이 전 세계 사용자의 요구를 충족하기 위해 다국어 검색 기능을 지원해야 합니다. 이 기사에서는 PHP와 Manticore Search(오픈 소스 검색 엔진 Sphinx 기반의 고성능 검색 엔진)를 사용하여 다국어 검색 기능을 구현하는 방법을 코드 예제와 함께 소개합니다.
먼저 서버에 Manticore Search를 설치하고 구성해야 합니다. Manticore Search 공식 문서(https://manual.manticoresearch.com/Installation)를 참조하여 설치를 완료할 수 있습니다.
검색하기 전에 검색할 데이터를 Manticore Search로 가져와야 합니다. "product_name_en" 및 "product_name_cn"과 같은 다중 언어 필드가 포함된 제품 정보가 포함된 "products"라는 테이블이 있다고 가정합니다.
먼저 Manticore Search의 색인을 설정해야 합니다. Manticore Search에서 제공하는 명령줄 도구를 사용하여 이 단계를 완료할 수 있습니다.
$ indexer -c /path/to/manticore.conf --all
그런 다음 Manticore Search에서 제공하는 MySQL 인터페이스를 사용하여 데이터를 가져올 수 있습니다. 먼저 MySQL 연결을 생성해야 합니다.
$mysqli = new mysqli('host', 'user', 'password', 'database'); if ($mysqli->connect_errno) { die("Failed to connect to MySQL: " . $mysqli->connect_error); }
다음으로 SQL 문을 사용하여 Manticore Search에 데이터를 삽입할 수 있습니다.
$sql = 'SELECT id, product_name_en, product_name_cn FROM products'; $result = $mysqli->query($sql); $all_rows = ''; while ($row = $result->fetch_assoc()) { $all_rows .= '(' . $row['id'] . ', "' . $row['product_name_en'] . '", "' . $row['product_name_cn'] . '"),'; } $all_rows = rtrim($all_rows, ','); $sql = 'REPLACE INTO products (id, product_name_en, product_name_cn) VALUES ' . $all_rows; $mysqli->query($sql); if ($mysqli->error) { die("Failed to insert data into Manticore Search: " . $mysqli->error); }
위의 코드를 통해 Manticore Search로 데이터를 성공적으로 가져왔습니다.
다음으로, 다국어 검색을 지원하는 PHP 코드를 작성해야 합니다.
$query = 'apple'; // 根据当前语言选择搜索字段 $language = 'en'; if ($language === 'cn') { $search_field = 'product_name_cn'; } else { $search_field = 'product_name_en'; } // 连接Manticore Search的搜索接口 $cl = new ManticoreSearchClient(); $cl->connect(); // 执行搜索 $result = $cl->search('products', $query, array('index' => 'products', 'field_weights' => array($search_field => 100))); // 解析搜索结果 $matches = array(); if ($result['total'] > 0) { foreach ($result['matches'] as $match) { $matches[] = $match['attrs']['id']; } } // 查询原始数据 $sql = 'SELECT * FROM products WHERE id IN (' . implode(',', $matches) . ')'; $result = $mysqli->query($sql); while ($row = $result->fetch_assoc()) { echo $row['product_name_en'] . '
'; }
위 코드를 통해 현재 언어를 기준으로 해당 검색 필드를 선택하고, 검색 키워드를 기준으로 검색을 수행할 수 있습니다. 마지막으로 원본 데이터 테이블을 통해 관련 검색 결과를 얻을 수 있습니다.
요약
이 글에서는 PHP와 Manticore Search를 사용하여 다국어 검색 기능을 개발하는 방법을 소개합니다. 위의 샘플 코드를 사용하면 글로벌 사용자의 요구에 맞는 다국어 검색 기능을 쉽게 구현할 수 있습니다. 동시에 Manticore Search는 검색 성능과 기능을 더욱 최적화하기 위한 풍부한 구성 옵션과 운영 인터페이스도 제공합니다.
다국어 검색 기능을 개발하는 친구들에게 이 글이 도움이 되었으면 좋겠습니다. 질문이 있으시면 언제든지 댓글란에 메시지를 남겨주세요.
위 내용은 PHP 및 Manticore Search를 사용하여 다국어 검색 기능 개발의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!