Sphinx PHP의 실제 사례 및 프로젝트 적용
소개:
오늘날 인터넷 시대에 정보량의 폭발적인 증가와 사용자 요구의 다양화로 인해 검색 엔진은 우리가 원하는 정보를 얻는 주요 방법 중 하나가 되었습니다. 우리에게 필요한 정보 중 하나입니다. 이러한 요구를 충족시키기 위해 전체 텍스트 검색 엔진 Sphinx가 탄생했습니다. PHP 언어와 함께 Sphinx를 사용하는 것도 많은 프로젝트에서 선택됩니다.
이 글에서는 실제 프로젝트에서 Sphinx PHP의 적용을 소개하기 위해 구체적인 사례와 프로젝트 적용을 예로 들어보겠습니다. 독자가 더 잘 이해할 수 있도록 일부 코드 예제도 제공됩니다.
1. 사례 1: 기사 검색 기능
뉴스 웹사이트가 있고 사용자가 관심 있는 기사를 빠르게 찾을 수 있도록 효율적인 기사 검색 기능을 제공해야 한다고 가정해 보겠습니다. 이 경우 구현에는 Sphinx PHP를 사용하겠습니다.
sudo apt-get install sphinxsearch
명령을 실행하면 됩니다. sudo apt-get install sphinxsearch
来完成。news.conf
的文件,并写入以下内容:source news { type = mysql sql_host = localhost sql_user = username sql_pass = password sql_db = database sql_port = 3306 sql_query = SELECT article_id, article_title, article_content FROM articles sql_attr_timestamp = article_publish_time } index news_index { source = news path = /var/lib/sphinxsearch/data/news docinfo = extern mlock = 0 mlock_recs = 0 index_exact_words = 1 min_word_len = 3 charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F morphology = stem_en } searchd { listen = 9312 listen = 9306:mysql41 log = /var/log/sphinxsearch/searchd.log query_log = /var/log/sphinxsearch/query.log read_timeout = 5 max_children = 30 pid_file = /var/run/sphinxsearch/searchd.pid seamless_rotate = 1 preopen_indexes = 1 unlink_old = 1 workers = threads binlog_path = /var/lib/sphinxsearch/data }
在上述配置文件中,我们定义了一个数据源 news
,指定了连接数据库的相关信息以及需要索引的字段。然后,我们定义了一个名为 news_index
的索引,指定了索引文件的路径以及其他相关配置。
<?php require_once('sphinxapi.php'); $sphinx = new SphinxClient(); $sphinx->SetServer("localhost", 9312); $keyword = $_GET['keyword']; // 从用户输入中获取关键词 $result = $sphinx->Query($keyword, 'news_index'); // 在索引中搜索关键词 if ($result && $result['total']) { foreach ($result['matches'] as $match) { echo "文章标题:" . $match['attrs']['article_title'] . "<br>"; echo "文章内容:" . $match['attrs']['article_content'] . "<br><br>"; } } else { echo "没有找到相关文章"; } ?>
上述代码中,我们首先创建了一个SphinxClient对象,并设置连接服务器的相关信息。然后,我们从用户输入中获取关键词,并使用Sphinx的Query方法在索引中搜索相关文章。最后,我们从搜索结果中取出文章的标题和内容,并进行展示。
以上就是一个简单的使用Sphinx PHP实现文章搜索功能的案例。通过这种方式,我们可以快速地从大量文章中找到所需的内容。
二、案例二:商品全文搜索
在电商网站中,商品的全文搜索功能是必不可少的。在这个案例中,我们将使用Sphinx PHP来实现一个实时的商品搜索功能。
sudo apt-get install sphinxsearch
进行安装。products.conf
的文件,并写入以下内容:source products { type = mysql sql_host = localhost sql_user = username sql_pass = password sql_db = database sql_port = 3306 sql_query = SELECT product_id, product_name, product_description FROM products sql_attr_uint = product_price } index products_index { source = products path = /var/lib/sphinxsearch/data/products docinfo = extern mlock = 0 morphology = stem_en } searchd { listen = 9312 listen = 9306:mysql41 log = /var/log/sphinxsearch/searchd.log query_log = /var/log/sphinxsearch/query.log read_timeout = 5 max_children = 30 pid_file = /var/run/sphinxsearch/searchd.pid seamless_rotate = 1 preopen_indexes = 1 unlink_old = 1 workers = threads binlog_path = /var/lib/sphinxsearch/data }
在上述配置文件中,我们定义了一个数据源 products
,指定了连接数据库的相关信息以及需要索引的字段。然后,我们定义了一个名为 products_index
news.conf
라는 파일을 만들고 다음 내용을 작성할 수 있습니다. <?php require_once('sphinxapi.php'); $sphinx = new SphinxClient(); $sphinx->SetServer("localhost", 9312); $keyword = $_GET['keyword']; // 从用户输入中获取关键词 $result = $sphinx->Query($keyword, 'products_index'); // 在索引中搜索关键词 if ($result && $result['total']) { foreach ($result['matches'] as $match) { echo "商品名称:" . $match['attrs']['product_name'] . "<br>"; echo "商品描述:" . $match['attrs']['product_description'] . "<br>"; echo "商品价格:" . $match['attrs']['product_price'] . "<br><br>"; } } else { echo "没有找到相关商品"; } ?>
news
를 정의하고 관련 정보를 지정합니다. 데이터베이스 및 인덱싱해야 하는 필드에 연결하기 위한 것입니다. 그런 다음 news_index
라는 인덱스를 정의하여 인덱스 파일 경로와 기타 관련 구성을 지정합니다. 코드에 Sphinx PHP를 사용하세요. Sphinx PHP의 API를 사용하여 Sphinx와 상호작용할 수 있습니다. 다음은 간단한 샘플 코드입니다.
rrreee
sudo apt-get install sphinxsearch
명령을 사용하여 설치해 보겠습니다. 🎜🎜검색 엔진 구성 파일에 색인을 설정하세요. products.conf
라는 파일을 만들고 다음 내용을 작성할 수 있습니다. 🎜🎜rrreee🎜위 구성 파일에서 데이터 소스 products
를 정의하고 관련 정보를 지정합니다. 데이터베이스 및 인덱싱해야 하는 필드에 연결하기 위한 것입니다. 그런 다음 products_index
라는 인덱스를 정의하여 인덱스 파일 경로와 기타 관련 구성을 지정합니다. 🎜🎜🎜코드에 Sphinx PHP를 사용하세요. 다음은 간단한 샘플 코드입니다: 🎜🎜rrreee🎜위 코드는 필드 이름이 다르다는 점을 제외하면 기사 검색 기능과 유사합니다. 또한, 사용자가 입력한 키워드를 기반으로 색인에서 관련 상품을 검색하고 검색 결과를 표시할 수도 있습니다. 🎜🎜결론: 🎜위의 사례 소개를 통해 실제 프로젝트에서 Sphinx PHP가 적용되는 모습을 확인할 수 있습니다. PHP 언어와 Sphinx 전체 텍스트 검색 엔진을 결합하여 효율적인 기사 검색 및 제품 검색 기능을 구현할 수 있습니다. 뉴스 웹사이트든 전자상거래 웹사이트든 이로부터 혜택을 누릴 수 있습니다. 🎜🎜물론 Sphinx에는 정렬, 페이징, 필터링 등과 같은 다양한 기능과 응용 시나리오가 있습니다. 이 기사의 예가 독자들에게 영감을 주고 더 많은 창의성과 아이디어를 불러일으킬 수 있기를 바랍니다. 🎜위 내용은 Sphinx PHP의 실제 사례 및 프로젝트 적용의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!