>  기사  >  백엔드 개발  >  Sphinx는 효율적인 검색 기능 예제 분석을 작성합니다.

Sphinx는 효율적인 검색 기능 예제 분석을 작성합니다.

WBOY
WBOY원래의
2023-10-03 08:40:46730검색

Sphinx 编写高效的搜索功能实例解析

Sphinx는 대규모 텍스트 검색 요구 사항을 효율적으로 처리할 수 있는 오픈 소스 전체 텍스트 검색 엔진입니다. 이 기사에서는 예제를 사용하여 Sphinx를 사용하여 효율적인 검색 기능을 작성하는 방법을 분석하고 구체적인 코드 예제를 제공합니다.

  1. Sphinx 설치
    먼저 서버에 Sphinx를 설치해야 합니다. Sphinx 공식 홈페이지(https://sphinxsearch.com/)에서 최신 버전의 설치 프로그램을 다운로드 하신 후, 안내에 따라 설치하시면 됩니다.
  2. 색인 만들기
    검색 기능 작성을 시작하기 전에 먼저 검색할 텍스트 데이터를 저장할 색인을 만들어야 합니다. 애플리케이션이 일부 제품에 대한 정보를 검색해야 한다고 가정해 보겠습니다. 각 제품에는 제목, 설명, 가격과 같은 속성이 포함되어 있습니다. "products"라는 인덱스를 만들 수 있습니다.

    먼저 Sphinx에 연결된 MySQL 데이터베이스를 생성하고 제품 데이터를 가져옵니다. "products"라는 데이터베이스가 있고 제품 ​​제목, 설명, 가격과 같은 필드가 포함된 "product_info"라는 테이블이 있다고 가정합니다.

    다음으로 "products" 인덱스에 적합한 구성 파일을 생성해야 합니다. "products.conf"라는 파일을 만들고 다음 내용을 추가합니다.

    source products
    {
        type = mysql
        sql_host = localhost
        sql_user = username
        sql_pass = password
        sql_db = products
        sql_port = 3306
    
        sql_query = SELECT id, title, description, price FROM product_info
        sql_attr_uint = price
    }
    
    index products
    {
        source = products
        path = /path/to/index/products
        charset_type = utf-8
    }

    MySQL 데이터베이스에 대한 연결 정보 및 쿼리 문을 지정합니다. "sql_attr_uint = 가격"은 가격 필드가 부호 없는 정수 유형의 속성임을 나타냅니다.

    마지막으로 다음 명령을 사용하여 인덱스를 생성합니다.

    $ indexer --config /path/to/products.conf --all
  3. 검색 기능 작성
    이제 Sphinx의 검색 기능 작성을 시작할 수 있습니다. 다음은 간단한 PHP 예입니다.

    <?php
    require('sphinxapi.php');
    
    $sphinx = new SphinxClient();
    $sphinx->setServer('localhost', 9312);
    
    $keyword = $_GET['keyword'];
    
    $sphinx->setMatchMode(SPH_MATCH_ANY);
    $sphinx->setSortMode(SPH_SORT_RELEVANCE);
    
    $result = $sphinx->query($keyword, 'products');
    
    if ($result['total'] > 0) {
        foreach ($result['matches'] as $match) {
            echo 'ID: ' . $match['id'] . '<br>';
            echo 'Title: ' . $match['attrs']['title'] . '<br>';
            echo 'Description: ' . $match['attrs']['description'] . '<br>';
            echo 'Price: ' . $match['attrs']['price'] . '<br><br>';
        }
    } else {
        echo 'No results found.';
    }
    ?>

    이 코드는 먼저 SphinxClient 개체를 생성하고 Sphinx 서버의 주소와 포트 번호를 지정합니다. 그런 다음 사용자가 입력한 키워드를 입력받아 일치 모드와 정렬 모드를 설정합니다.

    마지막으로 query() 메서드를 호출하여 검색을 수행하고 결과를 반복하여 일치하는 제품 정보를 인쇄합니다.

  4. 테스트 실행
    위 코드를 PHP 파일(예: search.php)로 저장하고 웹 서버에 배포하세요. 그런 다음 search.php?keyword=keyword에 액세스하여 검색할 수 있습니다.

    예를 들어 http://yourdomain.com/search.php?keyword=mobilephone을 방문하면 "휴대폰" 키워드가 포함된 제품을 검색하고 해당 페이지에 결과가 표시됩니다.

위 단계를 거쳐 Sphinx 기반의 효율적인 검색 기능을 구현했습니다. Sphinx는 실제 요구에 따라 검색 성능을 최적화하기 위해 풍부한 구성 옵션과 쿼리 구문을 제공합니다. 이 기사에 제공된 코드 예제가 독자가 Sphinx를 이해하고 사용하여 효율적인 검색 기능을 작성하는 데 도움이 되기를 바랍니다.

위 내용은 Sphinx는 효율적인 검색 기능 예제 분석을 작성합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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