Sphinx PHP는 전체 텍스트 검색을 위한 검색 기록 및 추천 기능을 구현합니다.

WBOY
풀어 주다: 2023-10-03 10:24:02
원래의
1004명이 탐색했습니다.

Sphinx PHP 实现全文搜索的搜索历史记录与推荐功能

Sphinx PHP는 전체 텍스트 검색의 검색 기록 및 추천 기능을 구현합니다.

소개:
인터넷의 급속한 발전과 함께 전체 텍스트 검색은 많은 웹사이트와 애플리케이션에서 필수적인 기능이 되었습니다. Sphinx는 대량의 텍스트 데이터를 빠르게 검색하고 검색할 수 있는 강력한 오픈 소스 전체 텍스트 검색 엔진입니다. 이 기사에서는 Sphinx PHP를 사용하여 전체 텍스트 검색의 검색 기록 및 추천 기능을 구현하여 사용자의 검색 경험을 향상시키는 방법을 소개합니다.

  1. Sphinx 설치 및 구성
    먼저 서버에 Sphinx를 설치하고 구성해야 합니다. 다음 단계에 따라 수행할 수 있습니다.

1.1 Sphinx 다운로드

Sphinx 공식 웹사이트(http://sphinxsearch.com/)를 방문하여 최신 버전의 Sphinx를 다운로드하세요. 파일의 압축을 풉니다.

1.2 Sphinx 설치

Sphinx 압축 해제 디렉터리에 들어가서 다음 명령을 실행하여 Sphinx를 설치합니다.

./configure make make install
로그인 후 복사

1.3 Sphinx 구성

Sphinx 설치 디렉터리에 sphinx.conf 구성 파일을 생성합니다.

source src1 { type = mysql sql_host = your_mysql_host sql_user = your_mysql_user sql_pass = your_mysql_password sql_db = your_mysql_database sql_port = 3306 sql_query = SELECT id, title, content FROM articles } index idx1 { source = src1 path = /path/to/index docinfo = extern morphology = stem_ru min_stemming_len = 4 } searchd { listen = 9312 log = /path/to/log/searchd.log }
로그인 후 복사

Put 위의 예에서 your_mysql_host, your_mysql_user, your_mysql_password 및 your_mysql_database를 실제 데이터베이스 정보로 바꾸십시오.

  1. PHP 코드 작성
    다음으로는 Sphinx를 이용하여 전체 텍스트 검색의 검색 기록 및 추천 기능을 구현하는 PHP 코드를 작성하겠습니다. 샘플 코드는 다음과 같습니다.
SetServer($host, $port); // 设置搜索模式为全文搜索模式 $sphinx->SetMatchMode(SPH_MATCH_EXTENDED2); // 定义关键词 $keyword = "php实现搜索"; // 执行搜索 $result = $sphinx->Query($keyword, "idx1"); if ($result["total"] > 0) { // 获取搜索结果 $matches = $result["matches"]; // 输出搜索结果 foreach ($matches as $match) { echo "文章标题:" . $match["attrs"]["title"] . "
"; echo "文章内容:" . $match["attrs"]["content"] . "
"; echo "
"; } } else { echo "没有找到相关的文章"; } ?>
로그인 후 복사

위 코드에서는 먼저 Sphinx 서버와 통신하는 데 필요한 API 함수가 포함된 sphinxapi.php 파일을 소개했습니다. 다음으로 SphinxClient 객체를 생성하고 Sphinx 서버의 연결 정보와 검색 모드를 설정했습니다.

검색을 수행하기 전에 키워드 $keyword를 정의하고 이를 Sphinx의 Query 메소드에 매개변수로 전달합니다. Query 메서드는 총 검색 결과 $total 수와 일치하는 각 결과 $matches에 대한 정보를 포함하는 검색 결과 $result의 배열을 반환합니다. $matches 배열을 반복하여 검색 결과의 제목과 내용을 출력할 수 있습니다.

  1. 검색 기록 기능
    검색 기록 기능을 구현하면 각 사용자의 검색 키워드를 데이터베이스에 저장할 수 있습니다. 이는 다음 단계를 통해 달성할 수 있습니다.

3.1 검색 기록 테이블 만들기
다음 필드를 포함하는 데이터베이스에 검색 기록 테이블을 만듭니다.

  • id: 기본 키
  • user_id: 사용자 ID
  • keyword: 검색 키워드
  • created_at: 생성 시간

3.2 검색 기록 삽입
검색을 수행한 후 검색 기록 테이블에 사용자의 검색 키워드와 현재 시간을 삽입합니다. 샘플 코드는 다음과 같습니다.

 0) { // ... // 将搜索关键词插入到搜索历史记录表中 $user_id = 1; // 假设用户ID为1 $keyword = "php实现搜索"; $created_at = date("Y-m-d H:i:s"); $sql = "INSERT INTO search_history (user_id, keyword, created_at) VALUES ('$user_id', '$keyword', '$created_at')"; // 执行SQL语句插入搜索历史记录 // ... // 输出搜索结果 // ... }
로그인 후 복사

위 코드에서는 먼저 사용자 ID $user_id, 검색 키워드 $keyword 및 현재 시간 $created_at를 정의합니다. 다음으로 INSERT INTO 문을 사용하여 이러한 값을 검색 기록 테이블에 삽입합니다. 실제 상황에 맞게 $keyword, $user_id 값을 수정해주세요.

  1. 추천 기능
    추천 기능을 구현하면 검색 기록을 바탕으로 사용자에게 관련 기사를 추천할 수 있습니다. 이는 다음 단계를 통해 달성할 수 있습니다.

4.1 사용자 검색 기록 얻기
데이터베이스에서 사용자의 검색 기록을 쿼리하고 이를 배열에 저장합니다. 샘플 코드는 다음과 같습니다.


        
로그인 후 복사

위 코드에서는 SELECT 문을 사용하여 사용자의 검색 기록을 쿼리합니다. 지정된 수의 검색 기록 레코드를 얻으려면 LIMIT 값을 조정하세요. 쿼리 결과를 $keywords 배열에 저장합니다.

4.2 검색 기록 기반 추천
사용자의 검색 기록을 기반으로 데이터베이스에서 관련 기사를 쿼리하고 추천 결과를 출력할 수 있습니다. 샘플 코드는 다음과 같습니다.

 0) { $sql = "SELECT title, content FROM articles WHERE "; foreach ($keywords as $keyword) { $sql .= "MATCH('$keyword') "; $sql .= "OPTION ranker=expr('sum(word_count)*user_weight') "; $sql .= "AGAINST('$keyword') OR "; } $sql = rtrim($sql, " OR "); $sql .= " LIMIT 5"; // 执行SQL语句查询推荐结果 // ... if (mysqli_num_rows($result) > 0) { // 输出推荐结果 while ($row = mysqli_fetch_assoc($result)) { echo "文章标题:" . $row["title"] . "
"; echo "文章内容:" . $row["content"] . "
"; echo "
"; } } else { echo "没有推荐的文章"; } }
로그인 후 복사

위 코드에서는 먼저 $keywords 배열이 비어 있는지 확인합니다. 비어 있으면 OR 조건으로 쿼리문을 생성합니다. MATCH...AGAINST 문을 사용하여 관련 기사를 검색하고 순위 지정 옵션을 사용하여 일치 가중치를 설정합니다. 각 쿼리 키워드에 더 높은 가중치 user_weight를 할당하면 관련성을 향상시킬 수 있습니다. 쿼리 결과를 프런트 엔드에 출력합니다.

요약:
이 글에서는 Sphinx PHP를 사용하여 전체 텍스트 검색의 검색 기록 및 추천 기능을 구현하는 방법을 소개합니다. 사용자의 검색 키워드 및 검색어 관련 기사를 저장함으로써 사용자의 검색 경험을 향상시킬 수 있으며, 사용자에게 더욱 개인화된 추천 결과를 제공할 수 있습니다. 독자들이 이 기사에서 제공하는 방법과 샘플 코드를 기반으로 해당 기능을 성공적으로 구현할 수 있기를 바랍니다.

위 내용은 Sphinx PHP는 전체 텍스트 검색을 위한 검색 기록 및 추천 기능을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!